#import "@local/handout:0.1.0": *
#import "@preview/cetz:0.4.2"

= Mirror Symmetry

#definition()
A _reflection_ is a transformation of the plane obtained by reflecting all points about a line. \
If this reflection maps the wallpaper to itself, we have a _mirror symmetry_. \

If $n$ such mirror lines intersect at a point, they form a _mirror node of order $n$_. \
#note[Mirror nodes with order 1 do not exist (i.e, $n >= 2$). A line does not intersect itself!]

#v(2mm)

Two mirror nodes on a wallpaper are identical if we can map one to the other with a translation and a rotation while preserving the pattern on that wallpaper.

#problem(label: "pat333")
Find all three distinct mirror nodes in the following pattern. \
What is the order of each node? \
#hint([
  You may notice rotational symmetry in this pattern. \
  Don't worry about that yet, we'll discuss it later.
])

#table(
  stroke: none,
  align: center,
  columns: 1fr,
  rows: 45mm,
  image("../res/wolfram/p3m1.svg", height: 100%),
)

#solution([
  The mirror nodes are:
  - the center of the amber cross
  - the center of each right-handed group of three adjacent hexagons
  - the center of each left-handed group of three adjacent hexagons
])

#v(1fr)


#definition()
_Orbifold notation_ gives us a way to describe the symmetries of a wallpaper. \
It defines a _signature_ that fully describes all the symmetries of a given pattern. \
We will introduce orbifold notation one symmetry at a time.

#definition()
In orbifold notation, mirror nodes are denoted by a #sym.convolve followed by a list of integer. \
Every integer $n$ following a #sym.convolve denotes a mirror node of order $n$.

#v(2mm)

The order of these integers doesn't matter. #sym.convolve`234` and #sym.convolve`423` are the same signature. \
However, we usually denote $n$-fold symmetries in descending order (that is, like #sym.convolve`432`). \
If we have many nodes of the same order, integers may be repeated.


#problem()
What is the signature of the wallpaper in @pat333? \
#hint[Again, ignore rotational symmetry for now.]
#solution([It is #sym.convolve`333`])


// MARK: page
#v(1fr)
#pagebreak()

#problem()
Find the signature of the following pattern.

#table(
  stroke: none,
  align: center,
  columns: 1fr,
  rows: 60mm,
  image("../res/*632-a.png", height: 100%),
)


#solution([
  It is #sym.convolve`632`:
  #table(
    stroke: none,
    align: center,
    columns: 1fr,
    rows: 40mm,
    image("../res/*632-b.png", height: 100%),
  )
])

#v(1fr)

#problem()
Draw a wallpaper pattern with signature #sym.convolve`2222`

#solution([
  Sample solutions are below.

  #table(
    stroke: none,
    align: center,
    columns: (1fr, 1fr),
    rows: 50mm,
    image("../res/wolfram/pmm.svg", height: 100%),
    image("../res/escher/pmm.svg", height: 100%),
  )
])

#v(1fr)

#pagebreak()


#remark()
In an exceptional case, we have two parallel mirror lines. \
Consider the following pattern:

#table(
  stroke: none,
  align: center,
  columns: 1fr,
  rows: 60mm,
  image("../res/**.png", height: 100%),
)

The signature of this pattern is #sym.convolve#sym.convolve

#problem()
Draw another wallpaper pattern with signature #sym.convolve#sym.convolve.

#v(1fr)
