Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 如何比较距离_Netlogo - Fatal编程技术网

Netlogo 如何比较距离

Netlogo 如何比较距离,netlogo,Netlogo,我在模拟一只困在圆形池塘里的老鼠,一只猫在池塘外面漫游。鼠标总是离猫180度,猫应该尽量从外面靠近鼠标 然而,现在猫只是顺时针移动,直到鼠标离开池塘并到达墙。然后它逆时针改变方向 我希望代码基本上比较猫移动前后的距离;如果到鼠标的距离大于它需要旋转的距离,如果到鼠标的距离小于,这意味着它越来越近,应该继续这样 我的代码如下: to go mouse-movement cat-movement end 沿圆移动[r] 如果有 发生斑块距离

我在模拟一只困在圆形池塘里的老鼠,一只猫在池塘外面漫游。鼠标总是离猫180度,猫应该尽量从外面靠近鼠标

然而,现在猫只是顺时针移动,直到鼠标离开池塘并到达墙。然后它逆时针改变方向

我希望代码基本上比较猫移动前后的距离;如果到鼠标的距离大于它需要旋转的距离,如果到鼠标的距离小于,这意味着它越来越近,应该继续这样

我的代码如下:

    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