Search code examples
netlogodivideagent-based-modeling

Divide regions accordingly to physical features


I'm working on a smaller project and got stuck on an issue, I'm not really sure if it's possible to solve it in NetLogo but I want to give StackOverflow a go!

I got a model that divides the world into different parts and randomly add physical features (such as rivers). If a feature goes through the whole region, I want it to separate the region and make into two regions. As an example, in the picture below, I want to separate the purple region into two unique regions accordingly to the physical feature (black).

1

The code I used to generate the picture above, can be found below.

to setup
  ca

  ;Setting world.
  resize-world 0 19 0 19

  ;Creating regions. 
  let x 5
  let y 5
  let col 45
  while [y <= max-pycor + 1][
    while [x <= max-pxcor + 1 ][
      ask patches with [pxcor < x and pxcor >= x - 5 and pycor < y and pycor >= y - 5][
        set pcolor col
      ]
      set x x + 5
      set col col + 10
    ]
    set x 5
    set y y + 5
  ]

  ;Generating physical features.    
  ask n-of 5 patches[ sprout 1[
    set pcolor black]
  ]

  let i 0
  while [ i < (max-pycor * 2 )][
    ask turtles [
      fd 1
      set pcolor black
      ifelse (random 20 <= 1)
      [
        rt one-of [-90 0 90]      
        forward 1
      ]
            [
        fd 1
        set pcolor black
        fd 1
        set pcolor black
      ]
      set pcolor black
      set i i + 1]
  ]

  ask turtles [die]
end 

Solution

  • I solved this by using the Patch Clusters model that can be found in the NetLogo model library.