Turtle Distribution Demo

Turtle Distribution Demo preview image

1 collaborator

Turtlezero2-white-048 James Steiner (Author)

Tags

code example 

Tagged by James Steiner over 3 years ago

turtles 

Tagged by James Steiner over 3 years ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 6.1.1 • Viewed 370 times • Downloaded 67 times • Run 0 times
Download the 'Turtle Distribution Demo' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


;; Distributing a number of evenly spread out turtles ;; Copyright (C) 2006 James P. Steiner ;; james at turtlezero

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

to setup-turtle
  set color 5 + who * 10
  set size 1
  set shape "circle"
end 

to distribute-turtles-arc
  clear-all
  let radius 0
  let circumference 0
  let arc 360
  let angle 0
  let arclength spread
  let segments 1
  let counter 0
  let max-radius max-pxcor * sqrt 2
  ;; make one turtle. try to place it.
  ;; if it can be placed, kill it.
  ;; try the next place
  ;; (until the current ring is completely out of the world)
  while [ counter < population and radius < max-radius ]
  [ crt 1
    [ set heading angle
      ifelse can-move? radius
        [ setup-turtle
          jump radius
          set counter counter + 1
      ]
      [ die
      ]
    ]
    set angle angle + arc
    if angle >= 360 - arc * .5
    [ ;; ring complete, calculate parameters of next ring
      set angle angle - 360
      set radius radius + spread
      set circumference pi * radius * 2
      set segments floor (circumference / arclength)
      set arc 360 / segments
    ]
  ]
end 

to distribute-turtles-grid
  clear-all
  ask n-of population (patches with [ pxcor mod spread = 0 and pycor mod spread = 0 ])
  [ sprout 1
    [ setup-turtle
    ]
  ]
end 

to distribute-turtles-spread
  clear-all

  ask n-of population patches
  [ sprout 1
    [ setup-turtle
    ]
  ]
  let settled? false
  let start timer
  let timeout start + 5 ;; max 5 seconds to settle
  while [ (not settled?) and (timer < timeout) ]
  [ set settled? true
    ask turtles
    [ let too-close other (turtles in-radius spread)
      if any? too-close
      [ face one-of too-close
        ifelse can-move? -.1
        [ jump -.1 ]
        [ setxy random-pxcor random-pycor ]
        ask too-close
        [ face myself
          ifelse can-move? -.1
          [ jump -.1 ]
          [ setxy random-pxcor random-pycor ]
        ]
        set settled? false
      ]
    ]
  ]

  let settled precision (timer - start) 4
  clear-output
  output-print (word "Settled in " settled " seconds")
  ;; un-crowd turtles
  ask turtles
  [ if any? other (turtles in-radius spread)
    [ die ]
  ]
end 

to orbit
  every ( 1 / 30 )
  [ ask turtles
    [ if pxcor != 0 or pycor != 0
      [ let d distancexy 0 0
        let h heading
        setxy 0 0
        set heading heading + 360 / size / d / 30
        ifelse can-move? d
        [ jump d ]
        [ die ]
      ]
    ]
  ]
end 

;; for modeling commons automatic thumbnail maker

to setup
  distribute-turtles-spread
end 

to go
end 

There are 2 versions of this model.

Uploaded by When Description Download
James Steiner almost 4 years ago Removed obsolete control Download this version
James Steiner almost 4 years ago Initial upload Download this version

Attached files

File Type Description Last updated
Turtle Distribution Demo.png preview Preview for 'Turtle Distribution Demo' almost 4 years ago, by James Steiner Download

This model does not have any ancestors.

This model does not have any descendants.