Re: Rotation3D, MatrixRotation3D ?
- To: mathgroup at smc.vnet.net
- Subject: [mg30410] Re: Rotation3D, MatrixRotation3D ?
- From: "ojg" <ole.jonny.gjoen at hitecvision.com>
- Date: Fri, 17 Aug 2001 03:09:50 -0400 (EDT)
- References: <9ld1m6$2gi$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Sounds interesting:) Are your routines able to regenerate the auler angles from the rotation? My problem is of a similar kind and might be good to look at:) Thanks, Johnny "David Park" <djmp at earthlink.net> wrote in message news:9ld1m6$2gi$1 at smc.vnet.net... > Johnny, > > If you have Mathematica Version 4, I may be able to help you. > > My Mathematica friend, Rip Pelletier, and I have been studying rotations > using Jack B. Kuipers` book "Quaternions and Rotation Sequences". I have > been preparing a set of tutorials which basically help us to understand > rotations by explaining it as clearly as possible. They are still somewhat > of a work in progress, but I am far enough along to be able to attack the > problems that you have posed. I am also working on a set graphics routines > which illustrate rotation sequences and help to visualize the various > sequences. > > We would be glad to share these with you if you wish. They do require > Mathematica Version 4 and they also use my DrawingPaper and DrawingCube > packages from my web site. They also use two packages > Geometry`ExtendRotations and Geometry`RotationGraphics. You would have to > install these packages in your AddOns/ExtraPackages folders. > > Here are some of the usage messages for the routines that are in the > packages. > > Geometry`ExtendRotations` > > SetRotationMatrices[alibi|alias] will set the 3D axis rotation matrices \ > according to the alibi or alias form. The current setting is saved in the \ > variable RotationMatrixForm. The alibi form matrices will rotate a vector by > \ > the right hand rule. The alias form matrices will rotate the coordinate > frame \ > by a right hand rule. > > Rx[\[Theta]] is a 3D rotation matrix for rotation about the x axis. > Ry[\[Theta]] is a 3D rotation matrix for rotation about the y axis. > Rz[\[Theta]] is a 3D rotation matrix for rotation about the z axis. > Rot[\[Theta]] is a 2D rotation matrix for rotation about the supposed z > axis. > > RotationAxisAndAngle[rotationmatrix] will generate the axis of rotation and > \ > the associated rotation angle in radians for a 3 x 3 rotation matrix. An \ > equally valid answer is obtained by reversing the signs of both the angle > and \ > the axis vector. > > EulerAngles[matrix, seqstring, form:alibi] will return the Euler angles \ > corresponding to a sequence of axes rotations specified by seqstring. An > axes \ > sequence of "XYZ" means rotation around the X axes by \[Psi], followed by \ > rotation about the Y axis by \[Theta], followed by rotation about the Z axis > \ > by \[Phi]. The rotations angles {\[Psi],\[Theta],\[Phi]} are returned. For \ > sequences of the form ABA, 0 \[LessEqual] \[Theta] \[LessEqual] \[Pi]. For \ > sequences of the form ABC, -\[Pi]/2 \[LessEqual] \[Theta] \[LessEqual] \ > \[Pi]/2. The answers are in terms of the standard alibi matrices, unless \ > alias is specified in the optional argument. > > Geometry`RotationGraphics` > > AlibiAliasAnimation2D[vector, {\[Theta]min, \[Theta]max}, numframes:24] \ > produces a side by side animation of the alibi and alias interpretation of a > \ > 2D rotation. > > DrawVector3D[vectortip, name, l, options] will draw a vector from the origin > \ > going to vectortip. The vector will be labeled with name at l vectortip. \ > options can be used to pass options to the Arrow3D routine. > DrawVector3D[vectortip, name, options] is the same as > DrawVector3D[vectortip, \ > name, 1.1, options] > > DrawFrame3D[rotmat, {name1, name2, name3}, l, options] will draw frame axes > \ > rotated according to the rotation matrix, rotmat, rotating the axes vectors > \ > in the alibi mode. The axes will be labeled with the names at a fractional \ > distance l along the axes vector. options can be used to pass options to the > \ > Arrow3D routine. > DrawFrame3D[rotmat, {name1, name2, name3}, options] is the same as \ > DrawFrame3D[rotmat, {name1, name2, name3}, 1.1, options] > > DrawBook[rotmat, scale] will draw a book centered at the origin and rotated > \ > using the rotation matrix rotmat. scale can be used to change the overall \ > size of the book. scale = 1 gives a book of dimensions 0.9 x 0.6 x 0.2. The > \ > book looks best with the following lighting option: > Lighting \[Rule] True, > AmbientLight \[Rule] GrayLevel[0.3], > LightSources\[Rule]{{{1, 0, 1}, GrayLevel[0.4]},{{1, 1, 1}, \ > GrayLevel[0.4]},{{0, 1, 1},GrayLevel[0.4]}} > Another possibility is to use the BookLighting option command. > > ThreeStepBookAnimation[{rot1, \[Theta]1max}, {rot2, \[Theta]2max}, {rot3, \ > \[Theta]3max}] will produce an animation of the book, rotating successively > \ > according to the three rotation matrices by the specified angles. > > TwoBookAnimation[seq1, seq2] animates two side by side book rotation \ > sequences where each sequence is given by a sequence of the form {{rot1, \ > \[Theta]1max}, {rot2, \[Theta]2max}, {rot3, \[Theta]3max}}. > > AliasAnimation3D[{rot1, \[Theta]1max}, {rot2, \[Theta]2max}, {rot3, \ > \[Theta]3max}] will animate the a three step rotation of the frame using \ > alias form matrices. The routine sets the alias form for matrices and then \ > restores the original form. > > So far, I have two completed tutorials. > 1) 2D rotations, alibi and alias interptetations. Matrix form. Mathematica > expressions for transforming row vectors, column vectors etc. > 2) 3D rotations about axes. Illustration of the matrix forms and the > mnemonic XYZXY for determining the directions of rotations and where to put > the +Sin and -Sin terms in the matrix. > 3) 3D rotation sequences. Calculating Euler angles or axis of rotation. > Still in progress, although the underlying routines are finished. > > We would be glad to share this work with anyone studying 3D rotations, > especially if they are interested in contributing ideas to improve them. > > Rip has been jumping ahead, learning how to use quaternions, but so far I > have been staying with rotation matrices. > > David Park > djmp at earthlink.net > http://home.earthlink.net/~djmp/ > > > > > > > > > From: ojg [mailto:ole.jonny.gjoen at hitecvision.com] To: mathgroup at smc.vnet.net > > > > Question regarding rotations. > > > > Some of the documentation found regarding this is not as far as I can see > > complete in the documentation, at least the subject is difficult enough to > > make me unsure once not 100% clear:) > > > > Fist, what are the defined "euler angles" in mathematica, and in > > what order > > are they applied? > > > > Second, of which side of the vector is the rotational matrix multiplied ? > > > > Third, is there a mathematica way to rotate around an abitrary rotational > > axis? If not, what would the mathematica matix be for this? > > > > My problem to solve is as follows: Given three rotational angles (a,b,c) > > applied in order to the following three rotational axes: Y axis, X axis, Z > > axis. (usual right hand system). This rotation applied to any > > vector v will > > give you a vector V (first Y rotation applied on v, etc). > > > > > > Now, given a rotational matrix with pure numerical values in, I > > need to find > > the three angles, and I need a general formulae for this solution taking > > care of the special cases. > > > > Thanks, > > Johnny > > > > > > > >