# [Numpy-discussion] Faster way to generate a rotation matrix?

Chris Colbert sccolbert@gmail....
Tue Mar 3 19:14:11 CST 2009

```In addition to what Robert said, you also only need to calculate six
transcendentals:

cx = cos(tx)
sx = sin(tx)
cy = cos(ty)
sy = sin(ty)
cz = cos(tz)
sz = sin(tz)

you, are making sixteen transcendental calls in your loop each time.

I can also recommend Chapter 2 of Introduction to Robotics: Mechanics and
Controls by John J. Craig for more on more efficient transformations.

On Tue, Mar 3, 2009 at 7:19 PM, Robert Kern <robert.kern@gmail.com> wrote:

> On Tue, Mar 3, 2009 at 17:53, Jonathan Taylor
> <jonathan.taylor@utoronto.ca> wrote:
> > Sorry.. obviously having some copy and paste trouble here.  The
> > message should be as follows:
> >
> > Hi,
> >
> > I am doing optimization on a vector of rotation angles tx,ty and tz
> > using scipy.optimize.fmin.  Unfortunately the function that I am
> > optimizing needs the rotation matrix corresponding to this vector so
> > it is getting constructed once for each iteration with new values.
> > >From profiling I can see that the function I am using to construct
> > this rotation matrix is a bottleneck.  I am currently using:
> >
> > def rotation(theta):
> >   tx,ty,tz = theta
> >
> >   Rx = np.array([[1,0,0], [0, cos(tx), -sin(tx)], [0, sin(tx), cos(tx)]])
> >   Ry = np.array([[cos(ty), 0, -sin(ty)], [0, 1, 0], [sin(ty), 0,
> cos(ty)]])
> >   Rz = np.array([[cos(tz), -sin(tz), 0], [sin(tz), cos(tz), 0], [0,0,1]])
> >
> >   return np.dot(Rx, np.dot(Ry, Rz))
> >
> > Is there a faster way to do this?  Perhaps I can do this faster with a
> > small cython module, but this might be overkill?
>
> You could look up to the full form of the rotation matrix in terms of
> the angles, or use sympy to do the same. The latter might be more
> convenient given that the reference you find might be using a
> different convention for the angles. James Diebel's "Representing
> Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors" is a
> nice, comprehensive reference for such formulae.
>
>
>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless
> enigma that is made terrible by our own mad attempt to interpret it as
> though it had an underlying truth."
>  -- Umberto Eco
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20090303/f5df1bb5/attachment-0001.html
```