代码来自here。作者提到,两个随机值balance
和max-offset
是“中间点更可能向内或向外偏移”,另一个是中点可以偏移的距离&#39 ;
我尝试对父顶点balance
和max-offset
求平均值,尝试了balance
(float,int,bool)的不同方法,以及balance
影响max-offset
的不同方法但是结果要么太均匀或者线圈太多,并且与演示没有关系(尽管这一步之前生成的地图也匹配)。
我只是想知道如何计算变量balance
和max-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)编码。