April 30th, 2011 - (fd howFar / cosine) or walking the hypotenuse
Using COSINE function and basic trigonometry to place turtles into a square pattern instead of a circle pattern from a CRO 32 turtles start. Every turtle will be in a row or column of turtles. Only turtles with headig 0 or 90 or 180 or 270 get to walk the shortest distance. All others walk the hypotenuse distance of a right triangle with the adjacent leg equal to shortet distance.
TO doCircles pd repeat 18 [ circle wait 0.1 rt 20 ] pu END TO circle repeat 72 [ fd 0.05 rt 5 wait 0.0025 ] END
powered by NetLogo
view/download model file: 000create32.nlogo
who numbers 0, 2, 4, and 6 face headings N, E, S and W respectively. who numbers odd turtles direction faced heading 1 NE 45 3 SE 135 5 SW 225 7 NW 315
The heading of a turtle is in degrees. Turtle 0 (when you CRO 4 or CRO 8 or CRO 64 turtles) always has heading of 0 degrees or 360 degrees and faces upward or due north. Headings 0 degrees = North 45 degrees = NE 90 degrees = East (or right) 180 degrees = South 270 degrees = West (or left)
turtles-own [cosine walkLength] to create32 ca cro 32 checkerBoard ask-concurrent turtles [ set color black set size 2 set pen-size 3 pd ifelse heading <= 45 or heading >= 315 [ set cosine cos heading ] [ ifelse heading > 45 and heading <= 135 [ set cosine cos (abs 90 - heading) ] [ ifelse heading > 135 and heading <= 225 [ set cosine cos (abs 180 - heading) ] [ set cosine cos (abs 270 - heading) ] ] ] set walkLength 8 / cosine slowWalk walkLength cosineDance ] end
Nested ifelse loops are used to get the top row, the right column, the bottom row and the left column of turtles.
ifelse heading <= 45 or heading >= 315 [ set cosine cos heading ]
heading = 0 degrees which is straight NORTH or upward on the turtle grid.
To doCoolPattern set size 1 set pen-size 1 pd repeat 36 [ slowWalk2 1.2 bk 1.2 rt 10 ] wait 2 pu END TO checkerBoard ask patches [ ifelse remainder (pxcor + pycor) 2 = 0 [ set pcolor white ] [ set pcolor orange ] ] END TO slowWalk2 [ howFar ] repeat 10 [ fd howFar / 10 ;; Surprise output when changed divisor to 10 but left repeat at 20! Beautiful! wait 0.01 ] END TO slowWalk [ howFar ] repeat 20 fd howFar / 20 wait 0.1 ] END
to create32 ca cro 32 ask turtles [ fd 2 pd fd 3 pu fd 2 pd fd 3 pu fd 2 ] end