如何在NetLogo中实现视线
乌龟计算/计算它与视线上给定斑块之间的所有海龟。
感谢。
答案 0 :(得分:1)
让我们说每只乌龟有一个turtles-own
被叫目标,这是给定的补丁,你可以让每只海龟面对目标补丁并计算它与给定补丁之间的所有乌龟:
ask turtles [
face target
let n 1
let c 0
while [patch-ahead (n - 1) != target][
ask patch-ahead n [
if any? turtles-here [set c (c + 1)]
]
set n (n + 1)
]
print (word who " has " c " turtles on the line of sight")
]
在NetLogo中,while循环看起来不是很干净但是有效。
答案 1 :(得分:1)
请参阅NetLogo模型库的代码示例部分中的视线示例。
答案 2 :(得分:0)
与Dr_stein非常相似
To-report count-turtles-on-line-to[target]
Let c 0
Let d distance target
Face target
While d > 0
[
Let c c + count turtles-on patch-ahead d
Let d d - 1
]
Report c
End
答案 3 :(得分:0)
我建议使用this answer中的patches-ahead
记者:
to-report patches-ahead [ dist step ]
report patch-set map patch-ahead n-values (dist / step) [ step + ? * step ]
end
你可以像这样使用它:
to setup
clear-all
create-turtles 100 [ setxy random-xcor random-ycor ]
ask turtles [
let target one-of patches
face target
show (word
count other turtles-on patches-ahead distance target 0.1
" turtles between me and " target)
]
end