面对最小的航向差异

时间:2016-05-03 21:21:59

标签: netlogo

我如何面对或旋转或将代理(例如乌龟)的标题设置为需要最小旋转的补丁集的元素。

所以代理有一个初始标题,我们有一个补丁集(例如一个锥形中的5个补丁),我想面对代理人那个角度差最小的代理人。我不想使用补丁,因为如果它是唯一的补丁,它可以是一个补丁。

我尝试了一些这些命令的组合: 最小的一个朝向自己的自我标题减去标题朝向表面 - 180

提前谢谢。

1 个答案:

答案 0 :(得分:3)

您是否在减去标题时遇到标题差异?然后你可以试试这个:

to-report abs-hdiff [#t #p]
  let _current [heading] of #t
  let _new [towards #p] of #t
  report abs (subtract-headings _current _new)
end

例如:

to test
  ca
  ask n-of 5 patches [set pcolor red]
  let _patches (patches with [pcolor = red])
  crt 1
  ask turtle 0 [
    hatch 1 [pen-down fd 10 die] ;just to see old heading
    face min-one-of _patches [abs-hdiff myself self]
  ]
end