这个Clojure代码中的两个随机变量有什么作用?

时间:2017-06-10 11:58:50

标签: c# algorithm clojure procedural-generation

代码来自here。作者提到,两个随机值balancemax-offset是“中间点更可能向内或向外偏移”,另一个是中点可以偏移的距离&#39 ;

我尝试对父顶点balancemax-offset求平均值,尝试了balance(float,int,bool)的不同方法,以及balance影响max-offset的不同方法但是结果要么太均匀或者线圈太多,并且与演示没有关系(尽管这一步之前生成的地图也匹配)。

我只是想知道如何计算变量balancemax-offset 来计算中点位移。

(defn offset-midpoint-rough
  [{[x1 y1] :position b1 :balance mo1 :max-offset}
   {[x2 y2] :position b2 :balance mo2 :max-offset}]
  (let [mx (/ (+ x1 x2) 2)
        my (/ (+ y1 y2) 2)
        vx (- (- y1 y2))
        vy (- x1 x2)
        balance (/ (+ b1 b2) 2)
        max-offset (/ (+ mo1 mo2) 2)
        d (* max-offset (- (rand) balance))]
    {:position [(+ mx (* d vx))
                (+ my (* d vy))]
     :balance balance
     :max-offset max-offset}))
顺便说一句,我已经想到了其他人没有参考发布的代码,基于文本描述,我在c#(Unity3D)编码。

编辑:图像显示与之前代码的比较(蓝色突出显示是代码,这让我感到困惑)。 Difference

0 个答案:

没有答案