diff options
| author | Gabriel Schneider <[email protected]> | 2026-03-26 16:23:24 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-03-27 13:48:42 -0300 |
| commit | 7c32657002fca2c7e2195d789b1b11e3071d79a2 (patch) | |
| tree | 6ee80577abce9f16251b3b8c642ae290ad8084b7 /trees/blog/figures | |
| parent | c5388feaf9a3bc57070af7c75d03c88bc4fbda4a (diff) | |
| download | 0x4200.cafe-7c32657002fca2c7e2195d789b1b11e3071d79a2.tar.gz 0x4200.cafe-7c32657002fca2c7e2195d789b1b11e3071d79a2.zip | |
Squashed older blog files
Diffstat (limited to 'trees/blog/figures')
| -rw-r--r-- | trees/blog/figures/frieze-old.typ | 78 | ||||
| -rw-r--r-- | trees/blog/figures/frieze.typ | 189 | ||||
| -rw-r--r-- | trees/blog/figures/genuary-2026-1.typ | 24 | ||||
| -rw-r--r-- | trees/blog/figures/rotating-snakes.typ | 17 |
4 files changed, 308 insertions, 0 deletions
diff --git a/trees/blog/figures/frieze-old.typ b/trees/blog/figures/frieze-old.typ new file mode 100644 index 0000000..6ccc79e --- /dev/null +++ b/trees/blog/figures/frieze-old.typ @@ -0,0 +1,78 @@ +#import "@preview/cetz:0.4.2" +#import cetz.draw: * + +#show text: it => smallcaps(it) +#set page(width: auto, height: auto) + +#let domain = { + let tolerance = 0.05 + set-style(stroke: color.blue) + line((tolerance, tolerance), (1.0 - tolerance, 1.0 - tolerance), stroke: 2pt) + set-style(stroke: color.red) + line((0.5, 0.8), (1.0 - tolerance, 1.0 - tolerance)) + set-style(stroke: color.black) + line((0.8, 0.5), (1.0 - tolerance, 1.0 - tolerance)) +} + +#let frieze(n, start, mode, draw-grid: false, x-step: 1) = { + cetz.canvas({ + set-style(stroke: color.blue) + translate(start) + if draw-grid { + grid( + (0, 0), + (n, 1), + stroke: red.transparentize(80%), + ) + } + + let i = 0 + let angles = (0deg, 180deg) + let transform = if mode == "hop" { + ang => () + } else if mode == "sidle" { + ang => (rotate(y: ang, origin: (0.5, 0.5))) + } else if mode == "step" { + ang => (rotate(x: ang, origin: (0.5, 0.5))) + } else if mode == "spinning sidle" { + ang => (rotate(y: ang, origin: (0.5, 0.5))) + } else if mode == "spinning hop" { + ang => (rotate(z: ang, origin: (0.5, 0.5))) + // ang => { + // if ang == 180deg { + // translate(x: -1) + // rotate(z: ang, origin: (0.5, 0.0)) + // } else { + // // translate(x: -0.5) + // rotate(z: ang, origin: (0.5, 0.0)) + // } + // } + } + + while i < n { + let ang = calc.rem(i, angles.len()) + + transform(angles.at(ang)) + domain + transform(angles.at(-ang)) + + translate(x: x-step) + + i += 1 + } + }) +} + + +hop +#frieze(8, (0, 0), "hop") +spinning hop +// #frieze(16, (0, 4), "spinning hop", x-step: 0.5) +#frieze(8, (0, 4), "spinning hop") +step +#frieze(8, (0, 10), "step") +sidle +#frieze(8, (0, 2), "sidle") +spinning sidle +#frieze(8, (0, 2), "spinning sidle") + diff --git a/trees/blog/figures/frieze.typ b/trees/blog/figures/frieze.typ new file mode 100644 index 0000000..de0a603 --- /dev/null +++ b/trees/blog/figures/frieze.typ @@ -0,0 +1,189 @@ +#import "@preview/cetz:0.4.2" +#import cetz.draw: * + +#show text: it => smallcaps(it) +#set page(width: auto, height: auto) + +#let fish = { + let tolerance = 0.0 + set-style(stroke: color.red) + line( + (tolerance, tolerance), + (1.0 - tolerance, 1.0 - tolerance), + (0.75, 1.), + (0.5, 0.9), + fill: color.red, + close: true, + ) + set-style(stroke: color.blue) + + line( + (tolerance, tolerance), + (1.0 - tolerance, 1.0 - tolerance), + (0.9, 0.5), + stroke: 1pt, + fill: color.blue, + close: true, + ) + circle( + (.0 - tolerance, .0 - tolerance), + radius: 0.05, + fill: color.black, + stroke: color.black, + ) +} + +#let trig = { + line((0.0, 0.2), (0.5, 1.0), (1.0, 0.2)) + line((0.0, 0.5), (0.5, 0.0), (1.0, 0.5), stroke: 2pt) + circle((0.85, 0.0), radius: 0.12, stroke: 1.5pt + color.black) +} + +#let domain = { + set-style(stroke: color.rgb(180, 190, 254)) + line( + // (0.0, 0.75), + (0.0, 0.1), + (0.25, 0.1), + (0.25, 0.75), + (0.75, 0.75), + (0.75, 0.40), + (0.55, 0.40), + (0.55, 0.60), + (0.35, 0.60), + (0.35, 0.1), + (0.35, 0.1), + (1.0, 0.1), + // (1.0, 0.75), + stroke: 1.2pt, + ) + circle( + (0, 0.5), + radius: 0.1, + fill: color.rgb(235, 160, 172), + stroke: color.rgb(235, 160, 172), + ) + circle((1.0, 0.0), radius: 0.2, fill: color.rgb(180, 190, 254)) +} + +#let frieze(n, start, mode, draw-grid: false, x-step: 1) = { + cetz.canvas({ + set-style(stroke: color.blue) + translate(start) + if draw-grid { + grid( + (0, 0), + (n, 1), + stroke: red.transparentize(80%), + ) + } + + let i = 0 + let c = (0.5, 0.5) + let transforms = ( + "hop": (i => (translate(x: x-step)),), + "spinning hop": ( + i => { + translate(x: x-step) + rotate(z: i * 180deg, origin: c) + }, + i => { + translate(x: -x-step) + rotate(z: i * 180deg, origin: c) + }, + ), + "step": ( + i => { + rotate(x: i * 180deg, origin: c) + translate(x: x-step) + }, + ), + "sidle": ( + i => { + translate(x: x-step) + rotate(y: i * 180deg, origin: c) + }, + i => { + translate(x: -x-step) + rotate(y: i * 180deg, origin: c) + }, + ), + "spinning sidle": ( + i => { + translate(x: x-step) + rotate(y: i * 180deg, origin: c) + }, + i => { + translate(x: -x-step) + rotate(z: i * 180deg, origin: c) + }, + i => { + translate(x: x-step) + rotate(y: i * 180deg, origin: c) + }, + i => { + translate(x: -x-step) + rotate(z: i * 180deg, origin: c) + }, + // i => { + // translate(x: x-step) + // rotate(z: i * 180deg, origin: c) + // }, + // i => { + // translate(x: x-step) + // rotate(x: i * 180deg, origin: c) + // }, + ), + "jump": ( + i => { + translate(y: -x-step) + rotate(x: i * 180deg, origin: c) + translate(x: x-step) + }, + i => { + rotate(x: i * 180deg, origin: c) + translate(y: x-step) + }, + ), + "spinning jump": ( + i => { + translate(x: -x-step) + rotate(y: i * 180deg, origin: c) + }, + i => { + rotate(x: i * 180deg, origin: c) + translate(y: x-step) + }, + i => { + translate(y: -x-step) + rotate(z: i * 180deg, origin: c) + translate(x: -x-step) + }, + i => { + rotate(x: i * 180deg, origin: c) + translate(y: x-step) + }, + ), + ) + + while i < n { + let it = calc.rem(i, transforms.at(mode).len()) + + transforms.at(mode).at(it)(1) + domain + // translate(x: x-step) + + i += 1 + } + }) +} + +#let n = 40 + +#frieze(n, (0, 0), "hop") +#frieze(n * 2, (0, 14), "spinning jump") +#frieze(n, (0, 4), "spinning hop") +#frieze(n, (0, 10), "step") +#frieze(n, (0, 2), "sidle") +#frieze(n * 2, (0, 12), "jump") +#frieze(n, (0, 2), "spinning sidle") diff --git a/trees/blog/figures/genuary-2026-1.typ b/trees/blog/figures/genuary-2026-1.typ new file mode 100644 index 0000000..85d63de --- /dev/null +++ b/trees/blog/figures/genuary-2026-1.typ @@ -0,0 +1,24 @@ +#import "@preview/cetz:0.4.2" +#set page(fill: color.black, width: auto, height: auto) + +#let day1 = { + cetz.canvas({ + import cetz.draw: * + + set-style(stroke: color.white) + let phi = 0.9 + let n = 8 + while phi < n { + let i = 0 + while i < (n - phi) { + let x = calc.sin(i) + let y = calc.cos(i) + circle((x, y + phi * 5), radius: phi) + i = i + 0.5 + } + phi = phi + 1 + } + }) +} + +#day1 diff --git a/trees/blog/figures/rotating-snakes.typ b/trees/blog/figures/rotating-snakes.typ new file mode 100644 index 0000000..bb3fd05 --- /dev/null +++ b/trees/blog/figures/rotating-snakes.typ @@ -0,0 +1,17 @@ +#import "@preview/cetz:0.4.2" +#set page(fill: color.black) + +#cetz.canvas({ + import cetz.draw: * + + set-style(stroke: color.white) + // set-style(fill: color.white) + + set-style(fill: color.white) + arc((2, 0), start: 0deg, stop: 300deg, mode: "PIE", anchor: "origin") + arc((6, 0), start: 240deg, stop: 540deg, mode: "PIE", anchor: "origin") + arc((4, -3.14), start: 120deg, stop: 420deg, mode: "PIE", anchor: "origin") + + set-style(stroke: color.blue) + line((4, 1), (3, -1)) +}) |
