我正在“观察”代理,现在想要以编程方式“解开”代理(以便不会监视代理)。我正在使用3D视图运行模型(在NetLogo 5.0.4中)。从用户手册中可以看出,取消观看的唯一方法是使用“reset-perspective”,但这会产生在3D视图中重置透视图的不良副作用。是否有一种更好的取消观察方式,不会扰乱观点?
答案 0 :(得分:2)
据我所知,在没有将观察者返回默认位置的情况下,无法在NetLogo 3D中调用reset-perspective
。
然而,有一种方法可以解决这个问题:您可以向当前正在观看的subject
hatch
询问隐藏的"虚拟"乌龟在它的当前位置和watch
这个假人而不是你的原始主题继续移动。 (但这并不是无缝的,因为"聚光灯"圆圈留在假人周围。)
以下是一个完整的示例,其中常规海龟有travelers
品种,傻瓜有cameras
品种:
breed [ travelers traveler ]
breed [ cameras camera ]
to setup
clear-all
create-travellers 10
watch one-of travelers
end
to go
ask travelers [ fd 0.1 ]
end
to stop-watching
if subject != nobody [
ask subject [
hatch-cameras 1 [
set hidden? true
watch-me
ask other cameras [ die ]
]
]
]
end
这假定从界面按钮调用stop-watching
。
答案 1 :(得分:1)
支持NetLogo 3D中观察者的程序控制是......参差不齐。
您可以存储__oxcor
,__oycor
和__ozcor
的值,然后在调用setxyz
后使用reset-perspective
恢复这些值。
但也有投球和投球。您可以使用__opitch
和__oroll
阅读它们,但在我看来它们无法直接设置。我想你至少可以使用facexyz
来恢复音高,但不是滚动? 3D东西让我困惑。
请注意,NetLogo的扩展API可用于编写符合您需要的扩展程序。