MathGroup Archive 1998

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Rotate3D bug solution

  • To:
  • Subject: [mg10302] Re: Rotate3D bug solution
  • From: Robert Beretta <>
  • Date: Mon, 5 Jan 1998 03:47:21 -0500
  • Organization: Conix Enterprises
  • References: <68l33o$>

David Withoff wrote:
> > Mark Evans wrote:
> >
> > > Paul Abbott wrote:
> > > >
> > > > The use of Eulerian angles for specifying rotations in 3D IS
> > > standard
> > > > (at least in maths and physics -- especially in quantum mechanics,
> > > > crystallography, and angular momemntum theory).  Note that the
> > > eulerian
> > > > angle parametrization avoids the singularities that arise in other
> > > > parametrizations.
> > > >
> > > In the same sense, you could say that sea shells are standard legal
> > > tender if you live in a certain part of the world.
> > >
> > > Paul is right that there is nothing technically wrong with this kind
> > > of
> > > rotation.  My point was that Mathematica packages should be written
> > > for
> > > a wider audience.  It seems intuitive that the most common
> > > understanding of a rotation matrix is one that rotates sequentially
> > > about each of the three coordinate axes.  The fact that Mathematica
> > > does not offer this rotation by default is a slip-up in my mind.
> >
> > Right on, Mark!
> >
> > I've never heard of Eulerian angles before encountering them in
> > Mathematica. Maybe they're the usual tricks-of-the-trade to a few
> > quantum physicists, but you'll be hard-pressed to find a reference to
> > them in any but the most esoteric mathematics literature.
> >
> > Dr. Selwyn Hollis
> > Associate Professor of Mathematics
> > Armstrong Atlantic State University
> > Savannah, GA 31419 USA
> > <>
> If you haven't heard of Euler angles, and you have a need for 3D
> rotation matrices, then I would certainly encourage you to take a look
> at Euler angles.  They are very useful, and provide a convenient,
> time-tested, and widely-used parameterization of 3D rotation matrices.
> To double-check that I wasn't just making this up, I walked over to my
> local university library just now and found that I wasn't at all
> hard-pressed to find references to Euler angles in general technical
> literature.  I found hundreds of references, simply by looking up
> "euler angles" on their computer.  Nearly all of those references were
> from various areas of engineering: mechanical engineering (e.g.
> "Mechanical Engineering Essentials Reference Guide", Harold A.
> Rothbardt (ed), McGraw-Hill (1988) -- which has a nice section on Euler
> angles written by a professor in the mechanical engineering department
> from UC Santa Barbara), aerospace engineering (e.g. "On the nonlinear
> deformation geometry of Euler-Bernoulli beams", Dewey H. Hodges and
> Robert A.  Ormiston, National Aeronautics and Space Administration
> (1980) -- an article on the design and construction of helicopter
> rotors), and so forth.
> In fact, although I'm sure something would turn up if I took a closer
> look (probably Paul Abbott could find something), I didn't see any
> items on this list from pure mathematics or quantum physics.  This also
> matches my personal experience.  Although I have a formidable
> background in quantum physics, all of the dozen or so encounters that I
> have had with Euler angles have been in other fields, such as robotics,
> structural dynamics, and classical mechanics.
> If the technical literature is any indication, Euler angles are standard
> just about everywhere.  This usefulness is reflected in the general
> engineering literature, where Euler angles are very common. That is why
> the RotationMatrix3D function uses Euler angles.  While you could
> certainly point to other features of Mathematica that show a bias
> toward physics, the use of Euler angles is not an example of that bias.
> I would be strongly supportive of adding other common parameterizations
> of 3D rotation matrices in Mathematica.  This suggestion about adding
> other parameterizations is a very good suggestion, and I hope that it
> will not be lost.
> I also hope, however, that Euler angles will not be lost amidst claims
> that they are just an obscure trick used by some tiny group of
> scientists.  That claim is simply not true.
> If there are other parameterizations of 3D rotation matrices that you
> would like to see added to Mathematica, I'm sure that the people at
> Wolfram Research would be glad to hear your suggestions.  If the
> parameterizations that you want are as widely used as Euler angles,
> that would of course be a strong reason to include them.
> Dave Withoff
> Wolfram Research

First, I would like to express my agreement with Dave's statements, in
their entirety.  Then, let me back up and see if there is some
confusion in terminology in the previous postings.

Paul stated "that the Eulerian angle parameterization avoids the
singularities that arise in other parameterizations".  Could Paul
actually be referring to Euler parameters, instead of Euler's angles?

Euler's angles suffer from the same polar singularity as other 3-angle
based parameterizations - Euler parameters do not.

Euler parameters (a.k.a. quaternion parameterization, a.k.a. the
Rodriguez formula - all the same numerically) utilize four parameters,
coupled by an implicit constraint, to represent the three degrees of
freedom of a general spatial rotation in a non-singular manner.  Euler
parameters are certainly common in angular momentum theory, and VERY
common in areas of computer science that make use their generality and
highly stable numerical properties.  Without claiming Dave's level of
diligence, I would say that Euler parameters are probably considered
fairly esoteric in most other fields - certainly not to be found in
elementary mechanics texts and certainly far less common that Euler's

A response to Paul's posting suggests a parameterization that uses three
sequential rotations about each of the three (assumed fixed) coordinate
axes.  While such a parameterization is very useful for virtual
rotations (rotations of infinitesimal magnitude) it is not generally
possible to represent large spatial rotations in this way, so such a
parameterization really cannot be used to formulate a spatial rotation

To conclude, a useful (in some fields) way to specify a general spatial
rotation is to specify a single rotation about a fixed axis, convert
this to Euler parameters, and then convert the Euler parameters to a
rotation matrix.  This parameterization is given by:

RotationMatrix3D::usage = "RotationMatrix3D[{eo,ei,ej,ek}] gives the
spatial rotation matrix associated with the four Euler parameters. 
RotationMatrix3D[ang,{x,y,z}] gives a rotation matrix that rotates ang
radians about the specified axis."

RotationMatrix3D[{eo_, ei_, ej_, ek_}]:=
	{{2 (-1/2+ei^2+eo^2), 2 (ei ej-ek eo), 2 (ei ek+ej eo)},
	 {2 (ei ej+ek eo), 2 (-1/2+ej^2+eo^2), 2 (ej ek-ei eo)},
	 {2 (ei ek-ej eo), 2 (ej ek+ei eo), 2 (-1/2+ek^2+eo^2)}}

RotationMatrix3D[ang_, ax:{_,_,_}]:=
	RotationMatrix3D[Prepend[ax Sin[ang/2]/Sqrt[], Cos[ang/2]]]

Note that significant algebraic simplifications can be made to the
result of RotationMatrix3D[ang, ax].

Bob Beretta
Conix Enterprises

  • Prev by Date: Re: Customizing Mathematica - keyboard
  • Next by Date: Re: Packages for Feynman Diagrams
  • Prev by thread: Re: Rotate3D bug solution
  • Next by thread: Re: Rotate3D bug solution