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

= Rotational Symmetry


#definition()
A wallpaper may also have $n$-fold rotational symmetry about a point.
#v(2mm)
This means there are no more than $n$ rotations around that point that map the wallpaper to itself.
#v(2mm)
As before, two points of rotational symmetry are identical if we can perform a translation and rotation that maps one to the other without changing the wallpaper.

#definition()
In orbifold notation, rotation is specified similarly to reflection, but uses the prefix #sym.diamond.stroked.small. \
For example:
- #sym.diamond.stroked.small`333` denotes a pattern with three distinct centers of rotation of order 3.
- #sym.diamond.stroked.small`4`#sym.convolve`2` denotes a pattern with one rotation center of order 4 and one mirror node of order 2.

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


#problem()
Find the three rotation centers in the left wallpaper. \
What are their orders?

#solution([This is #sym.diamond.stroked.small`333`])

#v(1fr)

#problem()
Find the signature of the pattern on the right.

#solution([This is #sym.diamond.stroked.small`3`#sym.convolve`3`])

#v(1fr)


#remark()
You may have noticed that we could have an ambiguous classification, since two reflections are equivalent to a translation and a rotation.
We thus make the following distinction: _rotational symmetry that can be explained by reflection is not rotational symmetry._

#v(2mm)

In other words, when classifying a pattern...
- we first find all mirror symmetries,
- then all rotational symmetries that are not accounted for by reflection.

#pagebreak()


// MARK: glide

= Glide Reflections

#definition()
Another type of symmetry is the _glide reflection_, denoted #sym.times.

A glide reflection is the result of a translation along a line followed by reflection about that line.

For example, consider the following pattern:
#table(
  stroke: none,
  align: center,
  columns: 1fr,
  rows: 60mm,
  image("../res/*x-a.png", height: 100%),
)

#problem()
Convince yourself that all mirror lines in this pattern are _not_ distinct. /
In other words, this pattern has only one mirror symmetry.

#solution([
  There may seem to be two, but they are identical. \
  We can translate one onto the other.
])

#v(1fr)



#problem()
Use the following picture to find the glide reflection in the above pattern.
#table(
  stroke: none,
  align: center,
  columns: 1fr,
  rows: 70mm,
  image("../res/*x-b.png", height: 100%),
)

#v(1fr)

#remark()
The signature of this wallpaper is #sym.convolve#sym.times.

#pagebreak()


#definition()
If none of the above symmetries appear in a pattern, then we only have simple translational symmetry. We denote this with the signature #sym.circle.small.

#remark()
In summary, to find the signature of a pattern:
- find the mirror lines (#sym.convolve) and the distinct intersections;
- then find the rotation centers (#sym.diamond.stroked.small) not explained by reflection;
- then find all glide reflections (#sym.times) that do not cross a mirror line.
- If we have none of the above, our pattern must be #sym.circle.small.



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

#table(
  stroke: none,
  align: center,
  columns: 1fr,
  rows: 50mm,
  image("../res/wiki/Wallpaper_group-cm-4.jpg", height: 100%),
)

#solution([
  This is #sym.convolve#sym.times.
])

#v(1fr)


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

#table(
  stroke: none,
  align: center,
  columns: 1fr,
  rows: 60mm,
  image("../res/wiki/Wallpaper_group-p4g-2.jpg", height: 100%),
)

#solution([
  This is #sym.diamond.stroked.small`4`#sym.convolve`2`
])

#v(1fr)



#pagebreak()

#problem()
Find two glide reflections in the following pattern.\
#note[(and thus show that its signature is #sym.times#sym.times.)]


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

#solution([
  #table(
    stroke: none,
    align: center,
    columns: 1fr,
    rows: 40mm,
    image("../res/xx-a.png", height: 100%),
  )
])

#v(1fr)
