Wallpaper groups (#23)
All checks were successful
CI / Typst formatting (push) Successful in 5s
CI / Typos (push) Successful in 11s
CI / Build (push) Successful in 5m39s

Reviewed-on: #23
This commit was merged in pull request #23.
This commit is contained in:
2025-05-08 18:40:59 -07:00
committed by Mark
parent 99344f9aed
commit 121780df6c
38 changed files with 150593 additions and 0 deletions

View File

@@ -0,0 +1,151 @@
#import "@local/handout:0.1.0": *
#import "@preview/cetz:0.3.1"
= Wallpaper Symmetries
#definition()
A _Euclidean isometry_ is a transformation of the plane that preserves distances. \
Intuitively, an isometry moves objects on the plane without deforming them.
There are four classes of Euclidean isometries:
- translations
- reflections
- rotations
- glide reflections
#note([We can prove there are no others, but this is beyond the scope of this handout.]) \
A simple example of each isometry is shown below:
#let demo(c) = {
let s = 0.5
cetz.draw.line(
(0, 0),
(3 * s, 0),
(3 * s, 1 * s),
(1 * s, 1 * s),
(1 * s, 2 * s),
(0, 2 * s),
close: true,
fill: c,
stroke: black + 0mm * s,
)
}
#table(
stroke: none,
align: center,
columns: (1fr, 1fr),
rows: (3.5cm, 3.5cm),
row-gutter: 2mm,
[
#cetz.canvas({
import cetz.draw: *
demo(ored)
translate(x: -1.0, y: -1.0)
demo(oblue)
})
#v(1fr)
Translation
],
[
#cetz.canvas({
import cetz.draw: *
circle((-2, 0), radius: 0.1, stroke: none, fill: black)
arc(
(-2, 0),
radius: 1,
anchor: "origin",
start: 0deg,
stop: -30deg,
mode: "PIE",
)
demo(ored)
rotate(z: -30deg, origin: (-2, 0))
demo(oblue)
})
#v(1fr)
Rotation
],
[
#cetz.canvas({
import cetz.draw: *
line((-2, 0), (4, 0))
translate(x: 0, y: 0.25)
demo(ored)
set-transform(none)
set-transform((
(1, 0, 0, 0),
(0, 1, 0, 0),
(0, 0, 1, 0),
(0, 0, 0, 1),
))
translate(x: 0, y: 0.25)
demo(oblue)
})
#v(1fr)
Reflection
],
[
#cetz.canvas({
import cetz.draw: *
demo(ored)
set-transform((
(1, 0, 0, 0),
(0, 1, 0, 0),
(0, 0, 0, 0),
(0, 0, 0, 0),
))
translate(x: 2, y: 0)
demo(oblue)
set-transform(none)
line((-1, 0), (5, 0))
})
#v(1fr)
Glide reflection
],
)
#definition()
A _wallpaper_ is a two-dimensional pattern that...
- has translational symmetry in at least two non-parallel directions (and therefore fills the plane) \
#note[
"Translational symmetry" means that we can slide the entire wallpaper in some direction, \
eventually mapping the pattern to itself.]
- has a countable number of reflection, rotation, or glide symmetries. \
#v(1fr)
#pagebreak()
#problem()
Is a plain square grid a valid wallpaper?
#solution([
Yes!
- It has translational symmetry in the horizontal and vertical directions
- It has a countable number of symmetries---namely, six distinct mirror lines (horizontal, vertical, and diagonal) duplicated once per square.
- A square grid is #sym.convolve`442`
])
#v(1fr)
#problem()
Is the empty plane a valid wallpaper?
#solution([
No, since it has uncountably many symmetries.
])
#v(1fr)