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

How to draw shapes outside the big circle shape - netlogo

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

breed [largecircle lc]
breed [smallcircke sc]

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

;cteate turtle / draw circle/ and make the circle to be in a drawing area (patches)
create-largecircle 1 [
    set shape "circle"
    set color green
    setxy 0 0
    set size  10
    stamp
    die
  ]
create-smallcircle 50 [
    set shape "circle"
    setxy random-xcor random-ycor;randomize
    move-to one-of patches with [pcolor = blue ]
  ]

它不会work.Circles仍然在大圆区域内生成 有什么想法可以满足要求吗?

您的方法行不通,因为您没有修改景观中任何颜色的补丁。 stamp 命令只留下大圆龟的图像,但下面的颜色仍然是蓝色。因此,即使在大圆圈的标记区域内,您的小圆圈仍然可以移动到任何地方。

要解决这个问题,您需要一种不同的方法。 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 中。我们现在可以使用这个补丁集来设置大圆补丁的颜色或控制小圆的移动。