netlogo 中的“forward 1”是什么意思?如何在 netlogo 中指定最近的乌龟补丁?

what does `forward 1` mean in netlogo? how to specify the nearest patch of a turtle in netlogo?

当我们要求乌龟forward 2时,是否意味着:

  1. 在它的前进方向上,移动到第二个最近的补丁

  2. 在其前进方向上,移动到第二个最近的补丁中心点

  3. 在其前进方向上,移动到第二个最近的补丁中心点(pxcor, pycor)

哪一个是正确的?还是他们的答案相同?

我们如何定义这只乌龟指向的最近的补丁?下面的理解对吗?

  1. 顶部补丁:如果航向在 -45(315) 和 45 度之间
  2. 右侧补丁:如果航向在 45 到 135 度之间
  3. 底部补丁:如果航向在 135 到 225 度之间
  4. 左侧补丁:如果航向在 225 到 315 度之间

意思是向前移动1的距离。最简单的方法是用下面的代码:

to setup
  clear-all
  create-turtles 1
  [ setxy 0 0
    set heading 45
    forward 1
    print xcor
    print ycor
  ]
end

尝试更改标题,看看会发生什么。请注意,补丁正好是 1 个单位宽,补丁的中心是整数值(因此补丁 0 0 从 xcor -0.5 扩展到 xcor +0.5)

forward完全忽略了补丁边界和补丁中心,所以1-3都是不正确的。补丁不进入其中;它只是乌龟的 x 和 y 坐标的三角函数。具体来说,forward 1 就意味着 setxy (xcor + sin heading) (ycor + cos heading)。目标补丁就是新的 x 和 y 坐标恰好位于其中的任何补丁。目的地可能是也可能不是补丁中心。

forward 1 可能会将乌龟留在同一个补丁中(例如,如果乌龟位于面向东北的补丁的西南角;对角线的长度为 1.414...,因此 forward 1 不足以达到新补丁)。或者,forward 1 可能会将乌龟带到前面最近的补丁,或前面第二个最近的补丁。 (如果乌龟刚好掠过一块地角,就会发生后者。)

NetLogo 模型库的代码示例部分中的 Next Patch Example 是探索和理解所有这些可能性的好模型

至于你问题的第二部分,你的定义只有在乌龟最初站在补丁中心时才是正确的。对于一般情况,Next Patch Example 也回答了这个问题。该模型中的 next-patch 过程类似于您的定义,但处理的是一般情况。