首页 > 解决方案 > Netlogo:在网格中心创建一个正方形区域的补丁

问题描述

我正在尝试创建一个以网格原点为中心的正方形棕色补丁。以前,我在界面上有一个名为“sink-patch-radius”的滑块,从 0 到 20。然后在我的代码中,我创建了一组以原点为中心的圆形补丁,颜色为棕色 + 2,半径为“sink-patch-radius”,周围的补丁是绿色的。这是为此工作的代码(感谢 JenB!):

;;create the 'sink'
let sink-centre patch 0 0
set sink-patches [patches in-radius sink-patch-radius] of sink-centre
ask sink-patches [ set pcolor brown + 2 ]

;; create the 'source'
set source-patches patches with [pcolor != brown + 2]
ask source-patches [ set pcolor green ]

所以现在,我希望这个想法保持不变,但我希望它不是一个圆形的“水槽区域”,而是一个正方形。我知道上面的代码将不得不改变,甚至可能会改变很多,因为你不能使用“半径内”来制作一个正方形。我正在考虑将滑块更改为“sink-patch-length”,以便调整正方形边的长度。然后我的问题是:如何将其合并到我的代码中,以便我得到一个以原点为中心的棕色补丁?例如,如果“sink-patch-length”设置为 20,那么我希望以原点为中心的 20x20 正方形(400 个单元格)的 pcolor 为 brown + 2。

任何帮助是极大的赞赏!谢谢你。

标签: netlogo

解决方案


使用内置坐标系。所以你想要(类似的东西)patches with [abs(pxcor) <= sink-patch-length and abs(pycor) <= sink-patch-length]。如果你想让它在中间以外的某个地方居中,你需要做一些调整来使边界正确。


推荐阅读