我想在NetLogo中分离乌龟的左右视觉域。左视野表示角度为-179到-1度,而右视野表示角度为1到179度,如果海龟的正面角度为0度。
在NetLogo中,patch-right-and-ahead
和patch-left-and-ahead
可以区分乌龟的左右视野,但这些代码只是一个角度。in-cone
不能分离视野。
在NetLogo中有什么代码来编写这个吗?
可以保存海龟当前的标题,将其向左旋转90度,然后使用
查看原始标题左侧的内容scan x 180
然后从原标题右转90度看看原标题右侧有什么
scan x 180
然后把它转回原来的标题。
下面的代码说明了这一点。将扫描角度设置为小于180的角度,以便更清楚地看到正在发生的事情。当你通过go步骤时,它会旋转并突出显示它所看到的内容。
globals [ scan-angle]
turtles-own [ actual-heading ]
to setup
clear-all
set scan-angle 180
create-turtles 1 [ set size 4 set heading 0 set actual-heading heading]
reset-ticks
end
to go
ask turtle 0 [ set heading (heading + 30) set actual-heading heading]
scansides scan-angle
tick
end
to scansides [ angle ]
ask patches [ set pcolor black]
ask turtle 0
[
;; scan left side
set heading (actual-heading - 90)
ask patches in-cone 10 angle [ set pcolor red]
;; scan right side
set heading (actual-heading + 90)
ask patches in-cone 10 angle [ set pcolor green]
set heading actual-heading
]
end