<div dir="ltr"><div>Could you show what you are doing to get the statement "However, I cannot reproduce this matrix via composition; i.e. by multiplying the underlying rotation matrices.". I would guess something involving the `*` operator instead of `@`, but guessing probably won't help you solve your issue.<br><br></div>    -Joe<br><br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 31, 2017 at 7:56 PM, Seb <span dir="ltr"><<a href="mailto:spluque@gmail.com" target="_blank">spluque@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I'm trying to compose Euler rotation matrices shown in<br>
<a href="https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/<wbr>Euler_angles#Rotation_matrix</a>.  For<br>
example, The Z1Y2X3 Tait-Bryan rotation shown in the table can be<br>
represented in Numpy using the function:<br>
<br>
def z1y2x3(alpha, beta, gamma):<br>
    """Rotation matrix given Euler angles"""<br>
    return np.array([[np.cos(alpha) * np.cos(beta),<br>
                      np.cos(alpha) * np.sin(beta) * np.sin(gamma) -<br>
                      np.cos(gamma) * np.sin(alpha),<br>
                      np.sin(alpha) * np.sin(gamma) +<br>
                      np.cos(alpha) * np.cos(gamma) * np.sin(beta)],<br>
                     [np.cos(beta) * np.sin(alpha),<br>
                      np.cos(alpha) * np.cos(gamma) +<br>
                      np.sin(alpha) * np.sin(beta) * np.sin(gamma),<br>
                      np.cos(gamma) * np.sin(alpha) * np.sin(beta) -<br>
                      np.cos(alpha) * np.sin(gamma)],<br>
                     [-np.sin(beta), np.cos(beta) * np.sin(gamma),<br>
                      np.cos(beta) * np.cos(gamma)]])<br>
<br>
which given alpha, beta, gamma as:<br>
<br>
angles = np.radians(np.array([30, 20, 10]))<br>
<br>
returns the following matrix:<br>
<br>
In [31]: z1y2x3(angles[0], angles[1], angles[2])<br>
Out[31]:<br>
<br>
array([[ 0.81379768, -0.44096961,  0.37852231],<br>
       [ 0.46984631,  0.88256412,  0.01802831],<br>
       [-0.34202014,  0.16317591,  0.92541658]])<br>
<br>
If I understand correctly, one should be able to compose this matrix by<br>
multiplying the rotation matrices that it is made of.  However, I cannot<br>
reproduce this matrix via composition; i.e. by multiplying the<br>
underlying rotation matrices.  Any tips would be appreciated.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Seb<br>
<br>
______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
</font></span></blockquote></div><br></div>