39 "Input vector must be of length 3." );
42 "Input matrix must be a 3x3 matrix" );
44 T c = std::cos( aAngle );
45 T s = std::sin( aAngle );
48#ifdef BELFEM_ARMADILLO
49 T * tData = aMatrix.
data() ;
51 tData[ 0 ] = aAxis( 0 ) * aAxis ( 0 ) * d + c;
52 tData[ 1 ] = aAxis( 1 ) * aAxis ( 0 ) * d + aAxis( 2 ) * s;
53 tData[ 2 ] = aAxis( 2 ) * aAxis ( 0 ) * d - aAxis( 1 ) * s;
55 tData[ 3 ] = aAxis( 0 ) * aAxis ( 1 ) * d - aAxis( 2 ) * s;
56 tData[ 4 ] = aAxis( 1 ) * aAxis ( 1 ) * d + c;
57 tData[ 5 ] = aAxis( 2 ) * aAxis ( 1 ) * d + aAxis( 0 ) * s;
59 tData[ 6 ] = aAxis( 0 ) * aAxis ( 2 ) * d + aAxis( 1 ) * s;
60 tData[ 7 ] = aAxis( 1 ) * aAxis ( 2 ) * d - aAxis( 0 ) * s;
61 tData[ 8 ] = aAxis( 2 ) * aAxis ( 2 ) * d + c;
63 aMatrix( 0, 0 ) = aAxis( 0 ) * aAxis ( 0 ) * d + c;
64 aMatrix( 1, 0 ) = aAxis( 1 ) * aAxis ( 0 ) * d + aAxis( 2 ) * s;
65 aMatrix( 2, 0 ) = aAxis( 2 ) * aAxis ( 0 ) * d - aAxis( 1 ) * s;
67 aMatrix( 0, 1 ) = aAxis( 0 ) * aAxis ( 1 ) * d - aAxis( 2 ) * s;
68 aMatrix( 1, 1 ) = aAxis( 1 ) * aAxis ( 1 ) * d + c;
69 aMatrix( 2, 1 ) = aAxis( 2 ) * aAxis ( 1 ) * d + aAxis( 0 ) * s;
71 aMatrix( 0, 2 ) = aAxis( 0 ) * aAxis ( 2 ) * d + aAxis( 1 ) * s;
72 aMatrix( 1, 2 ) = aAxis( 1 ) * aAxis ( 2 ) * d - aAxis( 0 ) * s;
73 aMatrix( 2, 2 ) = aAxis( 2 ) * aAxis ( 2 ) * d + c;
88 "Input vector must be of length 3." );
91 "Input matrix must be a 2x3 matrix" );
93 T c = std::cos( aAngle );
94 T s = std::sin( aAngle );
97 aMatrix( 0, 0 ) = aAxis( 0 ) * aAxis ( 0 ) * d + c;
98 aMatrix( 1, 0 ) = aAxis( 1 ) * aAxis ( 0 ) * d + aAxis( 2 ) * s;
101 aMatrix( 0, 1 ) = aAxis( 0 ) * aAxis ( 1 ) * d - aAxis( 2 ) * s;
102 aMatrix( 1, 1 ) = aAxis( 1 ) * aAxis ( 1 ) * d + c;
105 aMatrix( 0, 2 ) = aAxis( 0 ) * aAxis ( 2 ) * d + aAxis( 1 ) * s;
106 aMatrix( 1, 2 ) = aAxis( 1 ) * aAxis ( 2 ) * d - aAxis( 0 ) * s;
131 "Input matrix must be a 3x3 matrix" );
133 const real sa = std::sin( aRoll );
134 const real ca = std::cos( aRoll );
136 const real sb = std::sin( aPitch );
137 const real cb = std::cos( aPitch );
139 const real sc = std::sin( aYaw );
140 const real cc = std::cos( aYaw );
142#ifdef BELFEM_ARMADILLO
143 T * tData = aMatrix.
data() ;
149 tData[ 3 ] = ca*sb*sc - cc*sa ;
150 tData[ 4 ] = ca*cc + sa*sb*sc ;
153 tData[ 6 ] = sa*sc + ca*cc*sb ;
154 tData[ 7 ] = cc*sa*sb - ca*sc ;
160 aMatrix( 0, 0 ) = ca*cb ;
161 aMatrix( 1, 0 ) = cb*sa ;
162 aMatrix( 2, 0 ) = -sb ;
164 aMatrix( 0, 1 ) = ca*sb*sc - cc*sa ;
165 aMatrix( 1, 1 ) = ca*cc + sa*sb*sc ;
166 aMatrix( 2, 1 ) = cb*sc ;
168 aMatrix( 0, 2 ) = sa*sc + ca*cc*sb ;
169 aMatrix( 1, 2 ) = cc*sa*sb - ca*sc ;
170 aMatrix( 2, 2 ) = cb*cc;
void rotation_matrix_strip(const Vector< T > &aAxis, const T &aAngle, Matrix< real > &aMatrix)
Definition fn_rotation_matrix.hpp:82
void rotation_matrix(const Vector< T > &aAxis, const T &aAngle, Matrix< real > &aMatrix)
rotate around an axis with an angle
Definition fn_rotation_matrix.hpp:33