Search code examples
netlogo

Netlogo divide world into upper and lower


I am working in a program in Netlogo and I want to divide the world in upper-quadrant and lower-quadrant and ask turtles to move to the upper-quadrant. I have figured out how to divide the world in four quadrant from a previous question answered here, but I don't know how to divide it in two.

ask patches with [ pxcor <= max-pxcor and pxcor > 0  and pycor > 0]
  [
    set pcolor red
    set quadrant 1

  ]

  ask patches with [ pxcor >= min-pxcor and pxcor < 0  and pycor > 0]
  [
    set pcolor blue
    set quadrant 2
  ]

  ask patches with [ pxcor <= max-pxcor and pxcor > 0  and pycor < 0]
  [
    set pcolor green
    set quadrant 3
  ]

  ask patches with [ pxcor >= min-pxcor and pxcor < 0  and pycor < 0]
  [
    set pcolor yellow
    set quadrant 4
  ]

Solution

  • Given that you are interested in a lower and an upper quadrant, you only need to look at y coordinates. The specific condition depends on where your world's origin (i.e. coordinates [0;0]) is.

    If your world's origin is in the default position, which is the center, then do:

    patches-own [
     quadrant 
    ]
    
    to setup
      clear-all
      ask patches [
       ifelse (pycor > 0)
        [set quadrant 1]
        [set quadrant 2]
      ]
    end
    

    If your world's origin is in a corner (e.g. I assume bottom left corner in this case), just do:

    patches-own [
     quadrant 
    ]
    
    to setup
      clear-all
      ask patches [
       ifelse (pycor > max-pycor / 2)
        [set quadrant 1]
        [set quadrant 2]
      ]
    end
    

    If you don't know in advance where your world's origin will be, or if your world's origin is in a less common place than the two examples above, you can take a more generalised approach that fits any situation:

    patches-own [
     quadrant 
    ]
    
    to setup
      clear-all
      
      let y-extent (max-pycor - min-pycor + 1)
      ask patches [
       ifelse (pycor > y-extent / 2)
        [set quadrant 1]
        [set quadrant 2]
      ]
    end