Tetrahedral Symmetry

Tetrahedral Symmetry#

A tetrahedron is formed by joining alternating vertices as one traverses the edges of a cube. Taking these four vertices to be

V1=13(1,1,1)V2=13(1,1,1)V3=13(1,1,1)V4=13(1,1,1),

(such that they each lie on the unit sphere) we find that the corresponding spherically-projected coordinates are

k1=k2=1+i31,k3=k4=1i3+1.

(Note that an equivalent tetrahedron could be constructed using the points antipodal to the ones above; this is referred to as the “diametral tetrahedron”.)

The discrete rotational symmetries of the tetrahedron can be constructed by composing the two-fold rotation about the z axis (which maps V1V2, V3V4) with the three-fold rotation about the V1 axis (which maps V2V3, V3V4, V4V2). On the complex plane, these correspond to

I:zz=zII:zz=z+izi,

respectively.

from sympy import I, Matrix, Rational, conjugate, cos, exp, pi, simplify, sqrt, symbols
# Check of the above:
sp1 = (1 + I) / (sqrt(3) - 1)
sp2 = -(1 + I) / (sqrt(3) - 1)
sp3 = (1 - I) / (sqrt(3) + 1)
sp4 = (-1 + I) / (sqrt(3) + 1)

# fmt: off
((sp1 + I) / (sp1 - I)).equals(sp1) and \
((sp2 + I) / (sp2 - I)).equals(sp3) and \
((sp3 + I) / (sp3 - I)).equals(sp4) and \
((sp4 + I) / (sp4 - I)).equals(sp2)
# fmt: on
True

In terms of the homogeneous coordinates u and v, these two transformations map directly to

I:u=iuv=ivII:u=12(1+i)u12(1i)vv=12(1+i)u+12(1i)v.

Polynomial Invariants#

Keeping in mind that all symmetry transformations of the tetrahedron merely exchange a number of vertices with one another, it’s expected that a polynomial with roots at the locations of the vertices in the complex plane will be invariant under such transformations. To see this, consider the product

Φ(u,v):=i=14(ukiv)=(u2k12)(v2k32)=u42i3u2v2+v4

and apply the transformation (u,v)(u,v) as before. In the general case, this gives

Φ(u,v)=i=14(ukiv)=i=14(AkiC)i=14(ukiv)=i=14(AkiC)Φ(u,v)

where we define

ki:=kiDBkiC+Aki=kiA+BkiC+D.

In the case of both transformations I and II, the product i=14(ukiv) is clearly invariant, because the vertices all transform into one another under any of the transformations. For transformation I, the product i=14(AkiC)=1 because A=i and C=0. For transformation II, this product instead gives

i=14(AkiC)=[12(1+i)]4i=14(1ki)=14(1k12)(1k32)=14[1i(2+3)][1+i(23)]=12+i32=e2πi/3.

The above guarantees that the function Φ3(u,v) is an absolute invariant under the symmetries of the tetrahedral group.

# Check of the above
simplify(
    (Rational(1, 2) * (1 + I)) ** 4 * (1 - sp1) * (1 - sp2) * (1 - sp3) * (1 - sp4)
)
12+3i2

The above can also be done for the edge midpoints, and face centers, of the tetrahedron. In the latter case, it’s as simple as trading ki1/k¯i in the above expression for Φ (since the face centers are in line with the antipodes of the vertices). This yields

Ψ(u,v):=i=14(u+k¯i1v)=i=14(uk¯iv)=u4+2i3u2v2+v4.

(The second-last equality follows since k1k4=k2k3=1.) As one might expect, under transformation II the function Ψ(u,v) becomes

Ψ(u,v)=e2πi/3Ψ(u,v).

Therefore, the combinations ΦΨ and Ψ3 are also absolute invariants.

orth = Rational(1, 2) * Matrix([[1 + I, -1 + I], [1 + I, 1 - I]])
u, v = symbols("u v")
U, V = symbols("U V")
uv = Matrix([u, v])

uv_prime = orth * uv
print(f"{uv_prime=}")

Phi = (u - sp1 * v) * (u - sp2 * v) * (u - sp3 * v) * (u - sp4 * v)

# print(Phi.subs(u, uv_prime[0]))
Phi_prime = Phi.subs([(u, U), (v, V)]).subs([(U, uv_prime[0]), (V, uv_prime[1])])
(Phi_prime / exp(2 * pi * I / 3)).rewrite(cos).radsimp().expand()
uv_prime=Matrix([
[u*(1/2 + I/2) + v*(-1/2 + I/2)],
[ u*(1/2 + I/2) + v*(1/2 - I/2)]])
u423iu2v2+v4

In contrast, the six midpoints are at z=0, z=, z=±1, and z=±i. In this case, the invariant polynomial is given by

t(u,v)=uv(uv)(u+v)(uiv)(u+iv)=uv(u4v4).

Under the transformation II (with A=12(1+i)=B=C=D), we see that

t(u,v)=(AuAv)(Au+Av)×[(AuAv)2(Au+Av)2][(AuAv)2+(Au+Av)2]=(A2u2A2v2)[4AAuv][2(A2u2+A2v2)]=i2(u2+v2)[2uv][i(u2v2)]=t(u,v)

where, in the last line, we make use of A2=i/2=A2. Similarly, t(u,v)=t(u,v) under transformation I where A=i=D, B=C=0, we find

t(u,v)=AAuv(A2u2A2v2)(A2u2+A2v2)=t(u,v).

Therefore, t(u,v) is an absolute invariant as well.

By direct computation, one can evaluate the combination Ψ3Φ3. As it turns out, this expression has a particularly simple form:

Ψ3(u,v)Φ3(u,v)=123it2(u,v).
# Check of the above:
Phi = (u - sp1 * v) * (u - sp2 * v) * (u - sp3 * v) * (u - sp4 * v)
Psi = (
    (u - conjugate(sp1) * v)
    * (u - conjugate(sp2) * v)
    * (u - conjugate(sp3) * v)
    * (u - conjugate(sp4) * v)
)
simplify(Psi**3 - Phi**3).factor()
123iu2v2(uv)2(u+v)2(u2+v2)2
# Second check:
t = u * v * (u - v) * (u + v) * (u**2 + v**2)
(Psi**3 - Phi**3).equals(12 * sqrt(3) * I * t**2)
True
e_3, z_1 = symbols("e_3 z_1")

zs = [0, z_1, z_1 * e_3, z_1 * e_3]