ludus-scripts/spiralgon.ld

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)