代码之家  ›  专栏  ›  技术社区  ›  YAKOVM

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

  •  1
  • YAKOVM  · 技术社区  · 6 年前

    我想画一个大圆圈,外面画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 ]
      ]
    

    它不起作用.圆圈仍在大圆圈区域内生成 有什么想法我怎样才能达到要求?

    1 回复  |  直到 6 年前
        1
  •  1
  •   nldoc    6 年前

    您的方法不起作用,因为您没有修改景观中的任何面片颜色这个 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 . 然后,通过询问中心面片,识别某个半径内的所有面片,并将这些面片存储在全局变量中来创建大圆圈 大圆圈 . 我们现在可以使用这个面片集来设置大圆圈面片的颜色或控制小圆圈的移动。