- XLogo
This is similar to Pursuit curves. Three turtles are created. Turtle 3 orbits turtle 2, turtle 2 orbits turtle 1 and turtle 1 orbits turtle 3. Hence all three turtles are locked together. They are each given a weight. This determines how fast they orbit. The speed is calculated as Distance divided by the weight.
This is still an experimental program. Add another weight into the list for four orbiting turtles. This is very random / unstable.
To New
# set default screen, pen and turtle values
ResetAll SetScreenSize [400 400] HideTurtle
SetSC Black SetPC Green SetPS 1 PenUp
End
To Init :N
If :N <2 [Print [Need more than one turtle!] Stop]
# Make "Weights [8 -4 2]
# Make "Weights [8 -4 24]
# Make "Weights [8 -14 11] # neat
# Make "Weights [13 -5 -9]
Make "Weights [20 -14 8]
Repeat :N [
SetTurtle RepCount
Make "Angle RepCount*360/:N
SetPC Hue :Angle PenUp
SetXY (40*Sin :Angle) (40*Cos :Angle) PenDown]
End
To Hue :Theta
# Output RGB hue list from angle :Theta
Make "Red Round 127.5*(1+Sin :Theta)
Make "Green Round 127.5*(1+Sin (:Theta+120))
Make "Blue Round 127.5*(1+Sin (:Theta+240))
Output (List :Red :Green :Blue)
End
To Go :N
New SetTurtlesMax :N+2 Init :N
Forever [
Repeat :N [
SetTurtle RepCount Make "myPos Pos
SetTurtle RepCount+1
If RepCount+1>:N [SetTurtle 1]
HideTurtle SetH Towards :myPos
Make "Dist Distance :myPos
Left 90 ShowTurtle
Forward (Item RepCount :Weights)
/:Dist ] ]
End
Also see Spiro Explorer