使用netlogo的补丁之间的边缘到边缘距离

时间:2013-09-21 16:50:37

标签: netlogo

如何使用netlogo计算补丁之间的边到边距离?使用“距离”功能,可以从补丁中心计算补丁之间的距离。

非常感谢你的帮助。 祝你有美好的一天 海洋

1 个答案:

答案 0 :(得分:2)

如果要测量贴片边缘之间的距离,可以在贴片的边缘创建临时龟并测量这些龟之间的距离。我假设你想要两个贴片边缘上任意两点之间的最短距离。在这种情况下,您可以在每个补丁(四个角和四个中边缘点)上创建8只乌龟,并在任何一对海龟之间保持最小距离。

to-report create-edge-turtles [ p ]
  let edge-turtles nobody
  ask p [
    foreach sort neighbors [
      sprout 1 [
        face ?
        fd distance ? / 2
        set edge-turtles (turtle-set edge-turtles self)
      ]
    ]
  ]
  report edge-turtles
end

to-report edge-distance [ patch-a patch-b ]
  let edges-a create-edge-turtles patch-a
  let edges-b create-edge-turtles patch-b
  let result min [ min [ distance myself ] of edges-b ] of edges-a
  ask edges-a [ die ]
  ask edges-b [ die ]
  report result
end