Netlogo 如何比较距离
我在模拟一只困在圆形池塘里的老鼠,一只猫在池塘外面漫游。鼠标总是离猫180度,猫应该尽量从外面靠近鼠标 然而,现在猫只是顺时针移动,直到鼠标离开池塘并到达墙。然后它逆时针改变方向 我希望代码基本上比较猫移动前后的距离;如果到鼠标的距离大于它需要旋转的距离,如果到鼠标的距离小于,这意味着它越来越近,应该继续这样 我的代码如下:Netlogo 如何比较距离,netlogo,Netlogo,我在模拟一只困在圆形池塘里的老鼠,一只猫在池塘外面漫游。鼠标总是离猫180度,猫应该尽量从外面靠近鼠标 然而,现在猫只是顺时针移动,直到鼠标离开池塘并到达墙。然后它逆时针改变方向 我希望代码基本上比较猫移动前后的距离;如果到鼠标的距离大于它需要旋转的距离,如果到鼠标的距离小于,这意味着它越来越近,应该继续这样 我的代码如下: to go mouse-movement cat-movement end 沿圆移动[r] 如果有 发生斑块距离
to go
mouse-movement
cat-movement
end
沿圆移动[r]
如果有
发生斑块距离<前一斑块距离
[
fd(pi*r/180)*(速度/50)
rt速度/50
]
[
fd(pi*r/180)*(速度/50)*-1
rt速度/50*-1
]
结束
我不太清楚你在问什么。乌龟0是猫,乌龟1是老鼠吗?另外,你有没有试着打印出当前斑块距离和前一个斑块距离的值来看看发生了什么?我不完全清楚你在问什么。乌龟0是猫,乌龟1是老鼠吗?另外,您是否尝试过打印当前面片距离和前一面片距离的值以查看发生了什么?
to cat-movement
ask turtle 0
[
pen-down
set cprevious-patch-distance distance turtle 1
move-along-circle radius
set ccurrent-patch-distance distance turtle 1
]
end
to move-along-circle [r]
ifelse
ccurrent-patch-distance < cprevious-patch-distance
[
fd (pi * r / 180) * (speed / 50)
rt speed / 50
]
[
fd (pi * r / 180) * (speed / 50) * -1
rt speed / 50 * -1
]
end