如何在大圆圈形状之外绘制形状-NetLogo

时间:2018-07-23 00:41:31

标签: netlogo shape turtle-graphics

我想画一个大圆圈,在它外面画50个小圆圈

var array = [ "Foo", "Joust Duffle Bag", "Wayfarer Messenger Bag", "Bag Wayfarer", "Bag Way farer Way Bag", "Voyage Yoga Bag", "pushit Messagenger bag" ]; // sample data

var arr = array.filter(function (value) { // Native Array.Filter is supported all the way down to IE9 so no need for jquery FYI
    return (/wayfarer/gi.test(value)); // Will return true for every entry that contains the text 'wayfarer' anywhere in the string
});

console.log(arr); // arr = (2) ["Wayfarer Messenger Bag", "Bag Wayfarer"]            

它不起作用。在较大的圆圈区域内仍会生成圆圈 有什么想法可以满足要求吗?

1 个答案:

答案 0 :(得分:1)

您的方法无效,因为您没有修改景观中的任何pcolor色块。 stamp命令仅留下大圆龟的图像,但是下面的pcolor仍然保持蓝色。因此,即使在大圆环的印记区域内,小圆环仍然可以移动到任何地方。

要解决此问题,您需要使用其他方法。 NetLogo中的海龟形状对于生成模型的视觉输出很有用。但是,不可能识别出被某种乌龟形状覆盖的斑块。即使乌龟的视觉形状可以覆盖多个斑块,但其位置仍限于一个特定的斑块。 在不知道您确切打算对模型做什么的情况下,很难推荐一种方法。但是,这是一个接近您提供的代码示例的解决方案:

breed [smallcircle sc]
globals [largecircle]

to setup
ca
ask patches with [(pxcor > min-pxcor) and (pxcor < (max-pxcor))][
   set pcolor blue
]

;store patches within radius of center patch as global
ask patch 0 0 [
  set largecircle patches in-radius (10 / 2)
]
;set color of largecircle patches green
ask largecircle [
  set pcolor green
]
;create small circles and move to random location outside largecircle
create-smallcircle 50 [
    set shape "circle"
    move-to one-of patches with [not member? self largecircle]
]
end

我删除了大圆变种,而是创建了一个全局变量largecircle。 然后,通过询问中心面片,识别出一定半径内的所有面片,并将这些面片存储在全局变量largecircle中,创建大圆。现在,我们可以使用此补丁集来设置大圆圈补丁的pcolor或控制小圆圈的移动。