All checks were successful
CI / Typos (pull_request) Successful in 9s
CI / Typst formatting (pull_request) Successful in 4s
CI / Build (pull_request) Successful in 6m3s
CI / Typos (push) Successful in 10s
CI / Typst formatting (push) Successful in 4s
CI / Build (push) Successful in 7m25s
154 lines
2.9 KiB
Typst
154 lines
2.9 KiB
Typst
#import "@local/handout:0.1.0": *
|
|
#import "@preview/cetz:0.4.2"
|
|
|
|
= 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)
|