NETLOGO:使用补丁绘制矩形和形状

NETLOGO: Drawing Rectangles and Shapes with Patches

我正在尝试创建一个使用补丁绘制正方形和矩形的代码。使用的变量是形状左上角的坐标 x 和 y,长度和宽度的 l 和 w,颜色的 c。 我用了这个,它创建了一个矩形,其中 1,1 是左上角,它的长度为 5,宽度为 4。

to rectanglebase [x y w l c]
  ask patches with [pxcor <= w and pxcor >= x and pycor <= y and pycor >= (- l + 2)]
  [set pcolor c]
end
to therectangle
  rectanglebase 1 1 4 5 red
end

如果我想让 x 和 y 成为其他值,我需要修复什么?每次我输入另一个值时,输出都不是我想要的。我的代码需要什么样的修改才能使绘制的矩形补丁位于我放入矩形的 x 和 y 坐标处?

两个可能的修正:"pxcor <= w" 和 "pycor >= (- l + 2)"

从条件来看,pxcor "x coordinates" 似乎在您的 "x" x 坐标和 "w" x 坐标之间,这意味着 pxcor 正在从您的 "x" 中选择和你的宽度("w")。这与 pycor 相同。通过一些重写,界限变得更加清晰。

重写条件(其中 l 是长度,w 是宽度):

ask patches with
  [ w >= pxcor and pxcor >= x
    and
    y >= pycor and pycor >= (- l + 2) ] [ set pcolor c ]

可能的修改(*:修改):

ask patches with
  [ * w + x >= pxcor and pxcor >= x
    and
    y >= pycor and pycor >= *(y - l) ] [ set pcolor c ]