Discussion carried out in Mar 22 - Apr 28, 2000, in sci.math at Usenet:
========================================================================
On Mar 22, Hauke Reddmann posed a question about rotating v1 = (0.6,0,0.8,0)
to v2 = (0.36,0.64,0.48,0.48). One solution is the rotation, which carries
v1 to v2 along the plane spanned by v1 and v2; it is represented by the matrix
U_0 = [0.856 -0.384 -0.192 -0.288
0.384 0.744 0.512 -0.192
-0.192 -0.512 0.744 -0.384
0.288 -0.192 0.384 0.856].
This rotation is simple, that is, the orthogonal complement of the plane of
v1 and v2 is left pointwise fixed.
A general 4D-rotation carries two planes onto themselves. These two planes,
which remain in their places, are called invariant planes. The two invariant
planes are orthogonal complements of each other. If one of the two invariant
planes is fixed pointwise, the rotation is called simple. An invariant plane,
rotated in its own place, is called a rotation plane. Thus, a simple rotation
turns a rotation plane about a pointwise fixed plane. A simple rotation of
angle pi has an infinity of invariant planes reflected across a line.
On Mar 24, Zdislav Kovarik described a general rotation carrying v1 to v2, as
a product of three rotations. The first rotation, U_1, leaves v1 invariant,
the second rotation, U_0, carries v1 to v2 in their joint span, and the third
rotation, U_2, leaves v2 invariant. The composite rotation is U_2*U_0*U_1.
In R^3, all the rotations are simple, that is, they only have one rotation
plane, perpendicular to the axis of rotation. Let us first review how a unit
vector, v1, is rotated to another, v2, in R^3. In R^3, there is an infinity
of simple rotations carrying v1 to v2. The angle of rotation is at least the
angle between v1 and v2 and at most pi. For the rotation plane of the simple
rotation, one can give either of the following two descriptions, only one of
which generalizes to simple rotations of R^4:
1) The rotation plane of the simple rotation is the orthogonal complement of a
vector in the plane spanned by v1+v2 and any unit vector in the orthogonal
complement of the plane spanned by v1 and v2.
2) The rotation plane of the simple rotation is spanned by v1-v2 and any unit
vector in the plane spanned by v1+v2 and a unit vector in the orthogonal
complement of v1 and v2.
On Mar 27, Kevin Foltinek showed that the case (1) does not generalize to 4D.
Instead, the case (2) works also in 4D, where all the simple rotations
carrying v1 to v2 can be constructed by the method of (2).
Pertti Lounesto mentioned that a simple rotation, S, carrying a unit vector,
v1, to another, v2, can be written as S(x) = s*x/s, where s = sqrt(v2/v1),
as computed in the Clifford algebra Cl_4 of R^4.
On Mar 25, David Petry mentioned that sqrt(v2/v1) = v2*(v1+v2)/|v1+v2|, if
v2 =/= -v1. For v1 = 0.6e1+0.8e3 and v2 = 0.36e1+0.64e2+0.48e3+0.48e4,
sqrt(v2/v1) = 0.894-0.215e12-0.161e14+0.286e23-0.215e34.
On Mar 22, Zdislav Kovarik introduced a more general problem of rotating an
r-dimensional subspace A to another B in an n-dimensional space R^n.
The first non-trivial case is r = 2 and n = 4, where a 2-plane A is rotated
to another B in R^4. In the line case, Kovarik determined all the rotations
sending a line to another; so the problem was to find all rotations sending
a 2-plane A to a 2-plane B in R^4. In the line case, Kovarik identified the
rotation minimizing the angle of rotation; so the problem included determining
the minimal of rotation angle also in the plane case. While the rotation angle
is minimized by a simple rotation, in the line case, it seemed reasonable to
determine all the simple rotations carrying A to B (and ask whether a simple
rotation minimizes some angle of rotations).
On Mar 29, Denis Feldmann defined a bisector between A and B as a plane C,
whose each point is equidistant from A and B. Thus, bisectors sit in a
null-cone, which intersects the unit sphere S^3 along a surface, which is
homeomorphic to a torus S^1 x S^1. Feldmann noticed that a rotation of angle
pi in C (and some angle in the orthogonal complement of C) sends A to B.
Such a rotation fixes C, globally.
For an arbitrary bisector C between A and B, there is a rotation carrying A
to C and C to B. Conversely, a square-root of an arbitrary rotation carrying
A to B does not carry A to any bisector between A and B.
On Mar 27, Denis Feldmann solved the problem by choosing two orthonormal bases
(a1,a2,a3,a4) and (b1,b2,b3,b4) for R^4 so that (a1,a2) spans A and (b1,b2)
spans B. The matrix of the passage from the first basis to the other, that is
M_B/M_A, rotates A to B. Although the solution gives all the rotations sending
A to B, it necessitates a choice of a basis, and as such it is not intrinsic.
More insight to this geometric problem is obtained by referring only to those
objects that are inherent to the geometric configuration of the problem.
On Mar 29, Kovarik solved his problem intrinsically, by linear transformations,
in the case of non-orthogonal A and B. Let E and F be orthogonal projections
onto the planes A and B. Then
D = I-(F-E)^2
is positive (in the acute angle case). Define
U = (F*E+(I-F)*(I-E))*D^(-1/2).
Then U is a rotation satisfying F*U = U*E, that is, it transforms the range
of E onto the range of F. The rotation U can be written as a product of two
reflections about two 2-planes, as follows. Denote G = 2*E-I, H = 2*F-I.
Then G is a reflection about A and H about B (keeps the mirror B fixed
pointwise and reverses its orthogonal complement). Then
K = (G+H)/2 is not a reflection yet, but M = K*(K^2)^(-1/2)
is a reflection (about a bisector-plane between A and B), with the property
that M*G=H*M and thus M*E = F*M, meaning that M reflects A to B. (M happens
to be a rotation in even dimensions, but not in odd dimensions.) The product
of two reflections in 2-planes, U = H*M, is a rotation, with the property
U*E = F*U. The range C of the projector
P = (I+M)/2
is a bisector between A and B. Kovarik observed that in this special case,
a square-root of U carries A to C and C to B.
Kovarik's rotation is not simple, but turns both the invariant planes, say by
angles f_1 and f_2, where pi/2 > f_1 > f_2 > 0, where f_2 is the smallest angle
between two vectors in A and B. Kovarik's rotation minimizes the square norm
sqrt(f_1**2+f_2**2).
On Mar 30, Charles Giffen complemented Kovarik's solution by determining all
the rotations carrying A to B. Giffen noticed that we can first turn about A
by an arbitrary angle, then turn A an arbitrary angle, and then carry A to B
by Kovarik's rotation. Giffen also divided the set of rotations into two
classes, according to the sense of rotation induced on the target B.
On Apr 3, Denis Feldmann noted that there is an infinity of bisector-planes
between A and B, residing in the null-cone of points equidistant from A and B.
On Mar 28, Pertti Lounesto analyzed Kovarik's problem:
Represent the planes by unit bivectors, denoted also by A and B. Bivectors are
directed plane-segments, with areas as their magnitudes. Then, for x in R^4,
U*x = u*x/u, where u = sqrt(B/A),
where computations are carried out in the Clifford algebra Cl_4 of R^4. The
square-root sqrt(s) of s = B/A can be computed by
sqrt(s) = (1+s)/sqrt(2(1+~~_0+~~~~_4)),
where ~~~~_k is the k-vector part of s, in /\^k(R^4). The rotation U is the
same as Kovarik's: it minimizes the square norm of the rotation angles,
2*|log(u)| = sqrt(f_1**2+f_2**2).
From now on, denote Kovarik's U and C by U1 and C1. Denote
U1*x = u1*x/u1, where u1 = sqrt(B/A),
U2*x = u2*x/u2, where u2 = sqrt(-B/A).
Both U1 and U2 rotate A to B, but endow B with opposite sense of rotation.
The rotation planes of U1 and U2 are the same, but the rotation angles are
f_1,f_2 and f_1-pi,f_2 (thus the first rotation plane is oppositely oriented
for U1 and U2). The square norm of the rotation angles is minimized also by
U2, locally.
The maximum of square norms of rotation angles are obtained by the rotations
(u1*e1234)*x/(u1*e1234) = -U1*x,
(u2*e1234)*x/(u2*e1234) = -U2*x.
The rotation planes are the same for -U1 and -U2 as for U1 and U2. The
rotation angles of the maximizing rotations -U1 and -U2 are f_1-pi,f_2+pi
and f_1,f_2-pi.
The rotation planes of these minimizing/maximizing rotations are orthogonal
(but not complemently orthogonal) to both A and B.
A general rotation sending A to B is a composition of two rotations: The
first rotation keeps A fixed, globally, thus turns A and its orthogonal
complement, and the second rotation is a fixed rotation carrying A to B,
being chosen from two alternatives of induced sense of rotation on B.
The composed rotation can be written as
W*x = w*x/w, where w = sqrt(+-B/A)*exp(a*A+b*A*e1234),
where a,b are in R. Denote, for a,b in R,
u1(a,b) = u1*exp((a+b*e1234)*A),
u2(a,b) = u2*exp((a+b*e1234)*A).
Among the set of rotations, there are 4 simple rotations of angle pi, given by
u1(pi/2,0) = u1*A and u1(0,pi/2) = u1*A*e1234,
u2(pi/2,0) = u2*A and u2(0,pi/2) = u2*A*e1234.
Note that B*u1 = u1*A and B*u2 = -u2*A, and denote
C1 = u1*A and C2 = u2*A.
Since the simple rotations turn their rotation planes by angle pi, the four
elements C1, C2, C1*e1234, C2*e1234 are unit bivectors, representing four
bisectors between A and B. C1*e1234 and C2*e1234 are orthogonal complements
of C1 and C2. C1 and C2 have a line in common and are orthogonal.
All the bisector-planes between A and B can be divided into two classes, those
having a line in common with C1 and those having a line in common with C2.
Only C1 and its orthogonal complement C1*e1234 are orthogonal to all bisectors
in the class of C2; only C2 and its orthogonal complement C2*e1234 are
orthogonal to all bisectors in the class of C1. The bisectors form a
1-parameter set, homeomorphic to two circles, S^1 U S^1. The rotations
sending A to B form a 2-parameter set, homeomorphic to two torii,
(S^1 x S^1) U (S^1 x S^1).
On Apr 28, Panh described all rotations carrying A to B in a direct and
geometrical way, as follows: U is a fixed rotation carrying A to B;
1. U*R(a,b) where R(a,b) is a rotation of angle a about A and angle b in A,
2. U*S where restriction of S to A is a reflection of A across a line in A
and restriction of S to the orthogonal complement of A is also a reflection.
If the two rotation planes are turned the same angle, that is f_1 = f_2, the
rotation is called isoclinic. An isoclinic rotation does not have just two
rotation planes, but an infinity of rotation planes. An isoclinic rotation
turns each vector by the same angle, namely f_1, along some great circle.
In general, there are no isoclinic rotations carrying A to B.
If a rotation carries A to T and T to B, then T is not a bisector of A and B,
in general. However, for an isoclinic rotation, T is not only a bisector, but
also all points of the unit circle of T are at the same distance from A (and
from B).
Numerical examples:
===================
v1 = (0.6,0,0.8,0), v2 = (0.36,0.64,0.48,0.48)
a1 = (0.6,0,0.8,0), a2 = (0,0.8,0,0.6),
b1 = (0.7,-0.1,-0.7,0.1), b2 = (0.5,-0.5,0.5,-0.5)
E = [0.36 0 0.48 0
0 0.64 0 0.48
0.48 0 0.64 0
0 0.48 0 0.36]
F = [0.74 -0.32 -0.24 -0.18
-0.32 0.26 -0.18 0.24
-0.24 -0.18 0.74 -0.32
-0.18 0.24 -0.32 0.26]
A = [0 0.48 0 0.36
-0.48 0 -0.64 0
0 0.64 0 0.48
-0.36 0 -0.48 0]
B = [0 -0.3 0.7 -0.4
0.3 0 -0.4 0.1
-0.7 0.4 0 0.3
0.4 -0.1 -0.3 0]
U1 = [0.284 -0.675 -0.471 -0.492
0.362 0.701 -0.584 -0.193
0.887 -0.063 0.406 0.210
0.028 -0.223 -0.523 0.822]
f_1 = 1.457838, f_2 = 0.112958.
In notations of the Clifford algebra Cl_4 of R^4:
v1 = 0.6e1+0.8e3, v2 = 0.36e1+0.64e2+0.48e3+0.48e4
A = 0.48e12+0.36e14-0.64e23+0.48e34
B = -0.3e12+0.7e13-0.4e14-0.4e23+0.1e24+0.3e34
u1 = 0.745
-0.337e12-0.458e13-0.184e14-0.184e23+0.033e24+0.229e34
+0.038e1234
= exp(F/2), F = F_1 + F_2
F_1 = -0.709e12-1.012e13-0.431e14-0.431e13+0.137e24+0.457e34, f_1 = abs(F_1)
F_2 = -0.035e12+0.011e13+0.033e14+0.033e23-0.078e24+0.055e34, f_2 = abs(F_2)
F_1 = F*_0/sqrt(-F**2), F_2 = F*_4/sqrt(-F**2)
C1 = 0.095e12+0.475e13+0.008e14-0.699e23+0.091e24+0.519e34
C2 = 0.597e12-0.524e13+0.562e14-0.145e23-0.042e24+0.173e34
MatLab <-> CLICAL correspondences:
E*x = (x.A)/A, F*x = (x.B)/B, U1*x = u1*x/u1 (Kovarik did not give U2),
G*x = -A*x/A, H*x = -B*x/B.
Kovarik <-> Lounesto correspondences:
P*x = (x.C1)/C1, M*x = -C*1x/C1 (Kovarik did not give the alternative C2),
U1 = H*M <-> u1 = -B*C1 (both u1 and -u1 correspond to U1),
K = (G+H)/2, M = K*(K^2)^(-1/2) <-> C1 = (A+B)/sqrt(-(A+B)**2),
C2 = (A-B)/sqrt(-(A-B)**2).
Petry's formula for finding a square root of a product of unit vectors,
sqrt(v2/v1) = v2*(v1+v2)/sqrt((v1+v2)**2), generalizes to unit bivectors, as
sqrt(B/A) = -B*(A+B)/sqrt(-(A+B)**2),
where -(A+B)**2 belongs to the center of Cl_4, that is, is a sum of a scalar
and a 4-vector |A|**2+|B|**2+2e1234. Also
sqrt(-B/A) = B*(A-B)/sqrt(-(A-B)**2).
Clifford algebra notation has advantages over Kovarik's notation, which uses
linear transformations: In Clifford algebra, the 2-plane A represents all the
operations related to A:
orthogonal projection onto A: (x.A)/A
orthogonal rejection out of A: (x^A)/A
reflection about A: -A*x/A
reflection along A: A*x/A
simple rotation of angle a in the plane A: exp(a*A/2)*x/exp(a*A/2).
Denis Feldmann defined a bisector of A and B as a plane C, whose each point
is equidistant from A and B, abs((x^A)/A) = abs((x^B)/B) for x in C.
There is an infinity of bisectors, sitting in a null-cone between A and B.
Feldmann gave for
A = 0.48e12+0.36e14-0.64e23+0.48e34
= (0.6e1+0.8e3)(0.8e2+0.6e4) and
B = -0.3e12+0.7e13-0.4e14-0.4e23+0.1e24+0.3e34
= (0.7e1-0.1e2-0.7e3+0.1e4)(0.5e1-0.5e2+0.5e3-0.5e4)
an example of a bisector, which is not C1 or C2:
C = 2e12-2e14-e23+e24-e34 = (6e1-4e2+3e3+e4)^(2e1-e2+e3).
Feldmann's bisector evokes a new problem (based on Kovarik's characterization
of a bisector, in his special case, of Mar 29):
Find a rotation carrying A to C and C to B.
Solution:
s = 0.545
-0.061e12+0.261e13+0.486e14+0.089e23+0.477e24-0.385e34
-0.107e1234
S = [0.362 -0.494 0.750 0.250
-0.526 0.498 0.393 0.566
-0.023 0.406 0.528 -0.746
-0.770 -0.585 0.068 -0.246]
for which S*x = s*x/s, S*A/S = C, S*C/S = B, but S*S =/= U1.
Exercises (inspired by Feldmann):
=================================
1a. Find another rotation sending A to C and C to B.
Solution: There are eight rotations. Two of them are given by R1*x = r1*x/r1
and S1*x = s1*x/s1, where
r1 = sqrt(B*sqrt(B/C)*C*sqrt(C/A)),
s1 = sqrt(B*sqrt(B/(-C))*(-C)*sqrt(-C/A)), and
two more by the opposites, -R1 and -S1, represented by r1*e1234 and s1*e1234.
(The above s is s1.) The elements r1 and s1 belong to the class of C1 (having
a line in common with C2). In the class of C2 (having a line in common with
C1), the representatives of the rotations are computed slightly differently, as
r2 = sqrt(B*sqrt(B/C)*C*sqrt(-C/A)),
s2 = sqrt(B*sqrt(B/(-C))*(-C)*sqrt(C/A)), and
r2*e1234 and s2*e1234.
The operations vary in different classes:
C1: r1*A/r1 = C, r1*r1*A/(r1*r1) = -B; s1*A/s1 = -C, s1*s1*A/(s1*s1) = -B,
C2: r2*A/r2 = -C, r2*r2*A/(r2*r2) = B; s2*A/s2 = C, s2*s2*A/(s2*s2) = B.
1b. Kovarik did not find, with his matrix method, all the solutions
to his own problem and to the follow-up problems of posed by Feldmann.
Why is the matrix method, using projection operators, inferior to the
Clifford algebraic method, using simple multivectors?
Solution: Kovarik used orthogonal projection matrices on the subspaces
A and B. In so doing, Kovarik lost information about the senses of rotations
of the planes A and B, and of the bisector C. This information loss is
inherent to the matrix method, as can be seen from the Exercise 1a, where the
orientations play a crucial role. In contrast, in the Clifford algebra
formalism, orthogonal projections on planes are replaced by bivectors, which
as oriented plane segments encode information about senses of rotations.
The difference between bivectors and planes is the same as between vectors
and lines: as opposed to lines, vectors can be added and multiplied.
1c. (Proposed by Feldmann, on April 12): Find a rotation sending A to B
and fixing globally a bisector C between A and B.
Solution (by Lounesto, on April 12):
S = [-0.7 0.5 -0.1 0.5
-0.1 -0.5 0.7 0.5
-0.7 -0.5 -0.1 -0.5
-0.1 0.5 0.7 -0.5]
s = 0.447e12-0.447e14-0.224e23+0.224e24-0.224e34
-0.671e1234
for which S*A/S = B, S*C/S = C. Feldmann noticed that S turns C by angle pi
(and its complement by angle 1.470628905633336), and that S is unique, up to
a sign.
In general, s can be constructed as follows. Either C*C1 or C*C2 is a
bivector. If C*C1 is a bivector, let s = C^u1(a,b) or s = C^(u1(a,b)*e1234);
if C*C2 is a bivector, let s = C^u2(a,b) or s = C^(u2(a,b)*e1234); where
(a,b) =/= (pi/2,0) or (0,pi/2).
We need intersection lines of some bisectors between A and B:
C1 and C2: t0 = 0.434e1-0.526e2+0.566e3-0.464e4,
C1 and C2*e1234: t1 = 0.215e1-0.479e2-0.814e3-0.249e4,
C1*e1234 and C2: t2 = 0.871e1+0.322e2-0.071e3+0.364e4.
An arbitrary bisector C between A and B can be of two types:
1. C intersects C2 and C2*e1234,
2. C intersects C1 and C1*e1234.
For a in R, form two bisectors as follows (t3 = 0.1134413205185):
1. C1(a) = (t0*(cos(a)+C2*sin(a)*t3))^(t1*exp(a*C2*e1234)),
2. C2(a) = (t0*(cos(a)+C1*sin(a)*t3))^(t2*exp(-a*C1*e1234)).
We see that the bisector C1(a) is spanned by a unit vector in C2*e1234, at
angle x to t1, and a vector in C2 whose tip draws an ellipse of eccentricity
0.993545 = sqrt(1-t3**2). Similarly, the bisector C2(a) is spanned by a unit
vector in C2*e1234 and a vector drawing an ellipse in C2.
All the bisectors between A and B have now been constructed; they are either
of type C1(a) or of type C2(a). Feldmann observed that there is a rotation of
angle pi along any bisector (turning the orthogonal complement by some angle),
which sends A to B. But, the Feldmann rotations only form a 1-parameter set,
which is homeomorphic to the union of two circles, S^1 U S^1. Thus, Feldmann's
rotations do not form a complete set of rotations sending A to B; this set
being a 2-parameter set homeomorphic to two torii, (S^1 x S^1) U (S^1 x S^1).
C1(a) is an exterior product of two vectors; one draws a unit circle in
C2*e1234
t1*exp(a*C2*e1234), where a is in R,
and the other an ellipse in C2
t0*(cos(a)+C2*sin(a)*t3), where a is in R.
More exercises:
2a. Find three 2-planes A,B,C in R^4 so that every one of them is a bisector
of the other two, and so that they span together all of R^4.
Solution (by Feldmann, on April 6): A = e12,
B = (-1/2*e1+sqrt(3)/2*e3)(-1/2*e2+sqrt(3)/2*e4),
C = (-1/2*e1-sqrt(3)/2*e3)(-1/2*e2-sqrt(3)/2*e4) permuted by sqrt(B/A)
= 3/4+sqrt(3)/4*(e14-e23)-1/4*e1234, representing an isoclinic rotation.
Define the angle between two planes, without a common line, as the minimum
angle between vectors in the two planes.
2b. What is the minimum possible angle between such A,B,C?
Solution (by Feldmann, on April 8): There is no minimal angle (lower bound 0).
Proof: Take A = e12, T = (e1+a*e3)^(e1+a*e4), U simple rotation of angle 2pi/3
with T as the rotation plane, C = U*B/U, B = U*C/U. A,B,C intersect along e2.
Let a -> 0. In the limit, A,B,C are in the orthogonal complement of e3+e4,
at angles pi/3, so that B = e2(1/2*e1+sqrt(3/8)(-e3+e4)).
2c. What is the maximum angle between such A,B,C?
Define a square norm of matrices as the square root of sum of squares of the
entries. For antisymmetric matrices this norm is sqrt(2) times the square
norm of corresponding bivectors. Plane segments are represented either by
antisymmetric matrices with determinant zero or by bivectors whose square is a
scalar. Planes A, B, C are represented by unit bivectors, |A| = |B| = |C| = 1.
3a. Show that there are bisectors between A and B so that |A-C| =/= |B-C|.
3b. Show that there are bisectors between A and B so that |A-C| > |A-B|.
3c. Show that if |A-C| = |B-C|, then all points on the unit circle of C are
at the same distance from A (and from B, by definition).
Rotation matrices have square norm 2, while their representatives in the
Clifford algebra have square norm 1.
4a. Show that |U1-U2| = 2*sqrt(2) and |u1-u2| = sqrt(2).
4b. Show that |u1(a1,b1)-u2(a2,b2)| = sqrt(2), independent of the choice of
a1,b1,a2,b2 in R.
4c. Are the two torii, {u1(a,b)|(a,b) in R^2} and {u2(a,b)|(a,b) in R^2},
linked in the two-fold cover Spin(4) = S^3 x S^3 of SO(4)?
Recall that u1 and u2 have common rotations planes F_1 and F_2, which are
orthogonal to A and B and intersect them by lines, say by a_1, b_1, a_2, b_2.
5a. Show that the angle between a_2 and b_2 is the smallest possible angle
between vectors in A and B (namely it is f_2).
5b. Show that (with a proper choice of signs)
C1 = span{a_1-b_1,a_2+b_2}, C1*e1234 = span{a_1+b_1,a_2-b_2},
C2 = span{a_1+b_1,a_2+b_2}, C2*e1234 = span{a_1-b_1,a_2-b_2}.
6. Let the rotation U be neither simple with rotation angle pi nor isoclinic.
Are there planes P, containing lines L, such that {U(P) intersect P} = L?
Solution: Yes. Take any line L outside of the two rotation planes of U, and
let P be inv(U)(L)^L. Then U(inv(U)(L)^L) = L^U(L).
===================================================================
An interested viewer, who wants to explore rotations in 4D, can download
a computer program CLICAL, designed for CLIfford algebra CALculations from
http://www.helsinki.fi/~lounesto/CLICAL.htm
~~