Addendum
On the page Wallpaper groups: 2. Theorems on Rotation and Translation, there it covers the product of rotations.
I have learned, that with Complex Numbers, these theorems become trivial to prove, and one can obtain the equivalent rotation or translation much easily. (from Visual Complex Analysis , by Tristan Needham. p.17. Buy at amazon )
Complex Numbers have interesting history. Here we will only give a formal style definition, but with some explanations on why they are so defined.
Complex Number is defined as a pair {a,b}, where a and b are real numbers.
Addition of complex number is defined as:
{a,b} ⊕ {c,d} := {a + c, b + d}
Multiplication is defined as:
{a, b}⊗{c, d} := {a*c - b*d, b*c + a*d}
This definition of multiplication has important meaning when interpreted geometrically. Complex numbers can be thought as vectors, with a multiplication rule.
Here's a explanation: Suppose the distance from {c,d} to {0,0} is r, and suppose it makes an angle θ with the positive x-axis. Then, a complex number {a,b} multipied by {c,d} by the definition {a*c - b*d, b*c + a*d}, is geometrically equivalent of rotating the point {a,b} by θ, then scale it by r.
If A and B are complex numbers, than A⊗B == B⊗A. The order does not matter.
A rotation of θ around origin is expressed in complex number as multiplication by {Cos[θ],Sin[θ]}. In other words, a point {a,b} rotated by θ around the origin can be written as {a,b}⊗{Cos[θ],Sin[θ]}.
A translation by {a,b} is expressed as adding a complex number {a,b}.
Here's how to find products of rotation, using complex numbers.
A rotation of θ centered on A can be done by a sequence of:
- 1. translation of -A,
- 2. rotation of θ on origin,
- 3. translate it back by A.
In formulas, we have:
r[A,θ] == t[A]^-1 * r[0,θ] * t[A]
Expressed as complex numbers, the right hand side is
R (Z - A) + A
where Z is the complex number to be acted on, and R is
{Cos[θ],Sin[θ]}
Expand and collect we have
R Z + (-R+1) A
The R Z term is a rotation of Z, while the other term is a translation. So, we have shown that a rotation on arbitrary center is equivalent to a rotation on origin followed by a translation.
Similarly, a translation followed by a rotation on origin:
t[A] * r[0,θ]
written in complex numbers
(Z + A) R
is equal to
Z R + A R
meaning that it is equivalent to a rotation on origin followed by a translation.
A rotation θ on a point B followed by a translation is also equivalent to a rotation on origin followed by a translation. Witness:
r[B,θ] * t[A]
Since rotation on a arbitrary point B is equivalent to rotation on
origin followed by a translation, as shown above, so we can rewrite the
r[B,θ]
to be
r[{0,0},α] * t[C]
for some α and C. Thus
r[B,θ] * t[A] == r[{0,0},α] * t[C] * t[A]
This shows that a rotation on a point followed by a translation is just a rotation on origin followed by a translation.
The exact coordinate any product of symmetry can be easily calculated by complex numbers.
The sequence of rotations
r[{a1,a2},α] * r[{b1,b2},β]
applied to the point
{x,y}
( ( ({x,y} - {a1,a2}) * {Cos[α],Sin[α]} + {a1,a2} ) - {a1,a2} ) * {Cos[β],Sin[β]} + {b1,b2}
In Mathematica, if we define the complex multiplication as cTimes, and addition as cPlus:
cPlus[{a_, b_}, {c_, d_}] := {a + c, b + d} cTimes[{a_, b_}, {c_, d_}] := {a*c - b*d, b*c + a*d}
then our sequence of rotations:
cPlus[cTimes[cPlus[cPlus[cTimes[cPlus[{x, y}, -{a1, a2}], {Cos[α], Sin[α]}], {a1, a2}], -{b1, b2}], {Cos[β], Sin[β]}], {b1, b2}]
Expands to:
{b1 + Cos[β]*(a1 - b1 + (-a1 + x)*Cos[α] - (-a2 + y)*Sin[α]) - (a2 - b2 + (-a2 + y)*Cos[α] + (-a1 + x)*Sin[α])* Sin[β], b2 + Cos[β]*(a2 - b2 + (-a2 + y)*Cos[α] + (-a1 + x)*Sin[α]) + (a1 - b1 + (-a1 + x)*Cos[α] - (-a2 + y)*Sin[α])* Sin[β]}