Path: utzoo!attcan!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!samsung!sdd.hp.com!decwrl!bacchus.pa.dec.com!shlump.nac.dec.com!ryn.esg.dec.com!allvax!jroth From: jroth@allvax.dec.com (Jim Roth) Newsgroups: comp.graphics Subject: Re: 4-Space Basis Rotation Matrices Summary: Correction with respect to Euler angles Message-ID: <2498@ryn.esg.dec.com> Date: 12 Aug 90 17:57:33 GMT Sender: guest@ryn.esg.dec.com Organization: Digital Equipment Corporation Lines: 54 In article <2494@ryn.esg.dec.com>, jroth@allvax.dec.com (Jim Roth) writes... > >In article <1279@enuxha.eas.asu.edu>, hollasch@enuxha.eas.asu.edu (Steve Hollasch) writes... >> >> I'm writing a 4D wireframe-viewer and have run into the problem of >>generating rotation matrices for the 4D viewpoint. What are the basis >>rotation matrices in 4D? [ stuff deleted ... ] I just wanted to make a correction in my reply about Euler angles. Though it is true that there are 6 pairs of coordinate axes in 4 space, the correct composition of generalized Euler angle matrices does not involve matrices actually containing rotations in all these planes. Consider an n-1 dimensional rotation which fixes the n'th coordinate axis. This is a general rotation in n-1 space. If this is followed with a rotation which takes the n'th coordinate axis to an arbitrary point on the n-sphere you can inductively generate arbitrary Euler angle rotations. A systematic way to do this is to apply successive plane rotations in the (k,k-1) plane, then the (k-1,k-2) plane, ... then the (1,2) plane for k = 2 to n. Of course, this adds up to n(n-1)/2 matrices total. Thus in 4-D the series would be (assuming you multiply with column vectors on the right): | C -S 0 0 | | 1 0 0 0 | | 1 0 0 0 | | S C 0 0 | | 0 C -S 0 | | 0 1 0 0 | | 0 0 1 0 | | 0 S C 0 | | 0 0 C -S | | 0 0 0 1 | | 0 0 0 1 | | 0 0 S C | (1,2) plane (2,3) plane (3,4) plane | C -S 0 0 | | 1 0 0 0 | | S C 0 0 | | 0 C -S 0 | | 0 0 1 0 | | 0 S C 0 | | 0 0 0 1 | | 0 0 0 1 | (1,2) plane (2,3) plane | C -S 0 0 | | S C 0 0 | | 0 0 1 0 | | 0 0 0 1 | (1,2) plane That is, your rotation matrix would be (1,2) * (2,3) * (3,4) * (1,2) * (2,3) * (1,2) - Jim