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