initial commit

This commit is contained in:
2024-12-13 23:04:02 +01:00
commit 85d05c9595
33 changed files with 1932 additions and 0 deletions

67
misc/blobs/blobs.typ Normal file
View File

@ -0,0 +1,67 @@
#import "@preview/cetz:0.3.1": draw
#let rand-consts = (
a: 1103515245,
c: 12345,
m: (1).bit-lshift(31)
)
#let random(seed) = {
let seed = calc.rem(rand-consts.a * seed + rand-consts.c, rand-consts.m)
let value = seed / rand-consts.m
return (seed, value)
}
#let draw-blob(
seed,
center,
radius,
n-pts: 8,
curviness: 0.4,
debug: false,
..args
) = {
let pts = ()
let angle-step = 360deg / n-pts
let seed = seed
let v
if debug {
draw.circle(center, radius: radius, stroke: (dash: "dashed"))
}
for i in range(n-pts) {
(seed, v) = random(seed)
let angle = angle-step * (i + v - 0.5)
(seed, v) = random(seed)
let f = calc.rem(i, 2) * 2 - 1
let r = radius * (1 + f * v * curviness)
let dx = r * calc.cos(angle)
let dy = r * calc.sin(angle)
let pt = (center.first() + dx, center.last() + dy)
pts.push(pt)
if debug {
draw.circle(
pt,
radius: .1,
stroke: none,
fill: black
)
draw.line(
center,
(rel: center, to: (angle-step * i, radius)),
stroke: (dash: "dashed")
)
}
}
let name = args.named().at("name", default: none)
draw.group(name: name, {
draw.hobby(..pts, close: true, ..args)
if name != none {
draw.copy-anchors(name)
draw.anchor("center", center)
}
})
}

BIN
misc/blobs/main.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

79
misc/blobs/main.typ Normal file
View File

@ -0,0 +1,79 @@
#import "@preview/cetz:0.3.1": canvas, draw
#import "blobs.typ": draw-blob
#set page(width: auto, height: auto, margin: 1cm)
#canvas({
draw-blob(
2, (0, 0), 1.5,
stroke: green,
name: "blob1"
)
draw-blob(
8, (5, 0), 1.5,
n-pts: 10,
stroke: orange,
name: "blob2"
)
draw.circle(
"blob1.center",
radius: .05,
fill: black,
stroke: none,
name: "x"
)
draw.circle(
"blob2.center",
radius: .05,
fill: black,
stroke: none,
name: "y"
)
draw.content(
"x",
[$arrow(x)$],
anchor: "east",
padding: 3pt
)
draw.content(
"y",
[$arrow(y)$],
anchor: "west",
padding: 3pt
)
draw.content(
(-1.2, .8),
text(fill: green)[$RR^n$]
)
draw.content(
(4.6, 1.4),
text(fill: orange)[$RR^m$]
)
let mid = (2.5, .5)
draw.bezier-through(
"x.north-east", mid, "y.north-west",
stroke: blue + .5pt,
mark: (end: ">", fill: blue),
name: "arrow"
)
draw.content(
mid,
[$f$],
anchor: "south",
padding: 3pt
)
draw.content(
(2.5, -1),
text(fill: blue)[$f: RR^n -> RR^m$]
)
})