summaryrefslogtreecommitdiff
path: root/trees/blog/figures
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-03-26 16:23:24 -0300
committerGabriel Schneider <[email protected]>2026-03-27 13:48:42 -0300
commit7c32657002fca2c7e2195d789b1b11e3071d79a2 (patch)
tree6ee80577abce9f16251b3b8c642ae290ad8084b7 /trees/blog/figures
parentc5388feaf9a3bc57070af7c75d03c88bc4fbda4a (diff)
download0x4200.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.typ78
-rw-r--r--trees/blog/figures/frieze.typ189
-rw-r--r--trees/blog/figures/genuary-2026-1.typ24
-rw-r--r--trees/blog/figures/rotating-snakes.typ17
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))
+})