47 lines
893 B
Plaintext
47 lines
893 B
Plaintext
|
let gons = 10
|
||
|
let sides = 4
|
||
|
let size = 50
|
||
|
|
||
|
fn randcolor () -> (random(0,255), random(0,255), random(0,255))
|
||
|
|
||
|
fn ngon! (sides, size) -> {
|
||
|
repeat sides {
|
||
|
fd! (size)
|
||
|
rt! (inv(sides))
|
||
|
}
|
||
|
:gon!
|
||
|
}
|
||
|
|
||
|
fn spiralgon_recursive! (num, sides, size) -> {
|
||
|
pencolor!(randcolor())
|
||
|
ngon! (sides, size)
|
||
|
|
||
|
if gt? (num, 0) then {
|
||
|
rt!(inv(gons))
|
||
|
spiralgonr!(dec (num), sides, add(10,size))
|
||
|
} else {
|
||
|
:tired!
|
||
|
}
|
||
|
}
|
||
|
|
||
|
& Non recursive version using loop for reference/example
|
||
|
& fn spiralgon! (num, sides) -> {
|
||
|
& loop (15, 0) with (size, times) -> {
|
||
|
& if lt? (times, num) then {
|
||
|
& pencolor!(randcolor())
|
||
|
& ngon! (sides, size)
|
||
|
& rt! (0.2)
|
||
|
& if gt? (times, div (num, 2)) then {
|
||
|
& fd! (20)
|
||
|
& } else {
|
||
|
& back! (200)
|
||
|
& }
|
||
|
& recur (add (size, 1), inc (times))
|
||
|
& } else :dizzy
|
||
|
& }
|
||
|
& }
|
||
|
|
||
|
|
||
|
|
||
|
spiralgon_recursive!(gons, sides, size)
|