diff --git a/10print.ld b/10print.ld new file mode 100644 index 0000000..422ed58 --- /dev/null +++ b/10print.ld @@ -0,0 +1,64 @@ +penup! () +goto! (150, 150) & should be (-150, -150) +right! (0.25) + +let root_2 = 1.414213562 +let cell_size = 15 +let line_length = mult (root_2, cell_size) + +fn upstroke! () -> { + print! (:up) + penup! () + forward! (cell_size) + left! (0.125) + pendown! () + back! (line_length) + penup! () + forward! (line_length) + right! (0.125) +} + +fn downstroke! () -> { + print! (:down) + pendown! () + right! (0.125) + forward! (line_length) + left! (0.375) + penup! () + forward! (cell_size) + right! (0.25) +} + +fn up_or_down! () -> { + let rand = random () + if lt? (rand, 0.5) + then upstroke! () + else downstroke! () +} + +fn newline! () -> { + penup! () + back! (mult (grid_size, cell_size)) + right! (0.25) + forward! (cell_size) + left! (0.25) +} + +let grid_size = 20 + +fn randcolor! () -> pencolor! ((random (0, 255), random (0, 255), random (0, 255))) + + + + repeat grid_size { + randcolor! () + up_or_down! () + } + +& repeat grid_size { + +& newline! () +& } + + + diff --git a/gons_recur.ld b/gons_recur.ld new file mode 100644 index 0000000..58170e5 --- /dev/null +++ b/gons_recur.ld @@ -0,0 +1,44 @@ +fn ngon! (sides, size) -> { + repeat sides { + forward! (size) + right! (div (1, sides)) + } + :tada! +} + +fn randcolor () -> (random (0, 255), random (0, 255), random (0, 255)) + +fn pen_randcolor! () -> pencolor! (randcolor ()) + +fn spiral_gon! (iter) -> { + loop (30, 0, colors :lime) with (size, times, color) -> { + let randcolor = (random(0, 255), random(0, 255), random (0, 255)) + let newcolor = if eq? (color, colors :lime) + then colors :fuchsia + else colors :lime + if lt? (times, iter) + then { + pen_randcolor! () + ngon! (5, size) + right! (inv (iter)) + recur (add (size, 1), inc (times), newcolor) + } + else :ok + } +} + +& spiral_gon! (100) + +fn spiral_gonr! { + (iter) -> spiral_gonr! (iter, iter, 30) + (_, 0, _) -> :ok + (iter, times, size) -> { + pen_randcolor! () + ngon! (4, size) + right! (inv (iter)) + spiral_gonr! (iter, dec (times), inc (size)) + } +} +goto! (37, 37) +spiral_gonr! (100) +print! (turtle_state()) diff --git a/koch.ld b/koch.ld index 5c1b3f8..81294e2 100644 --- a/koch.ld +++ b/koch.ld @@ -1,18 +1,19 @@ & koch curve let length = 10 +let angle = 0.25 fn koch! { (0) -> fd! (length) (n) -> { koch! (dec (n)) - lt! (0.25) + lt! (angle) koch! (dec (n)) - rt! (0.25) + rt! (angle) koch! (dec (n)) - rt! (0.25) + rt! (angle) koch! (dec (n)) - lt! (0.25) + lt! (angle) koch! (dec (n)) } } diff --git a/koch_tri.ld b/koch_tri.ld new file mode 100644 index 0000000..cbd9f5f --- /dev/null +++ b/koch_tri.ld @@ -0,0 +1,31 @@ +& koch triangles! + +let angle = inv (3) + +let half = div (_, 2) + +fn koch! { + (0, len) -> fd! (len) + (n, len) -> { + let newlen = div (len, 3) + let next = dec (n) + koch! (next, newlen) + left! (half (angle)) + koch! (next, newlen) + right! (angle) + koch! (next, newlen) + left! (half (angle)) + koch! (next, newlen) + } +} + +& just give ourselves some runway +penup! () +left! (0.25) +forward! (350) +right! (0.5) +pendown! () + +& make the triangles! +koch! (6, 800) +