【发布时间】:2014-10-19 10:15:22
【问题描述】:
我想在理解和使用补丁形状和大小与原点方面得到一点帮助。我正在尝试标记恰好在特定海龟形状下的补丁。例如,如果海龟是(w x h)的矩形,我想更改该形状下所有补丁的颜色或属性,而不仅仅是在原点补丁。当然,使用矩形也许我可以手动为下面的补丁着色,但是有没有任何选项可以修改更复杂的海龟形状下的补丁?谢谢。
【问题讨论】:
标签: size shape patch netlogo turtle-graphics
我想在理解和使用补丁形状和大小与原点方面得到一点帮助。我正在尝试标记恰好在特定海龟形状下的补丁。例如,如果海龟是(w x h)的矩形,我想更改该形状下所有补丁的颜色或属性,而不仅仅是在原点补丁。当然,使用矩形也许我可以手动为下面的补丁着色,但是有没有任何选项可以修改更复杂的海龟形状下的补丁?谢谢。
【问题讨论】:
标签: size shape patch netlogo turtle-graphics
好吧,有一种笨拙的方法可以做到这一点,它有一些锯齿和其他小问题,比如将所有可见对象(海龟、链接、标签、绘图层等)转移到补丁的 pcolor 上。但至少这是可能的。它利用了包含的位图扩展。主要思想在下面paint-patches。
extensions [bitmap]
to setup
clear-all
resize-world 0 199 0 199
set-patch-size 1
ask n-of 30 patches [ sprout 1 [set size 15]]
end
to paint-patches
let bmap bitmap:from-view
bitmap:copy-to-pcolors bmap true
ask turtles [ht] ; to show that the turtle shape is now painted to pcolors
end
【讨论】:
这在 NetLogo 中是不可能的。海龟的形状纯粹是视觉上的。无法访问海龟形状的确切轮廓,然后以某种方式将轮廓用作计算的基础。
如果您正在处理一小组已知形状,例如正方形/三角形/圆形,那么您可以单独处理每种情况,并编写自己的代码来对应形状的色块。但是如果你一般需要这种能力,你就被困住了。
您可以编写一个扩展来执行此操作,但扩展必须包含所有原始代码才能实际完成计算形状和补丁网格之间重叠的工作。 NetLogo 中没有执行您想要的计算的现有代码。
【讨论】: