@ -150,7 +150,7 @@ namespace core
CMatrix4 < T > operator * ( const CMatrix4 < T > & other ) const ;
//! Multiply by another matrix.
/** Like calling: (*this) = (*this) * other
/** Like calling: (*this) = (*this) * other
*/
CMatrix4 < T > & operator * = ( const CMatrix4 < T > & other ) ;
@ -189,10 +189,10 @@ namespace core
//! Get the rotation, as set by setRotation() when you already know the scale used to create the matrix
/** NOTE: The scale needs to be the correct one used to create this matrix.
You can _not_ use the result of getScale(), but have to save your scale
You can _not_ use the result of getScale(), but have to save your scale
variable in another place (like ISceneNode does).
NOTE: No scale value can be 0 or the result is undefined.
NOTE: It does not necessarily return the *same* Euler angles as those set by setRotationDegrees(),
NOTE: It does not necessarily return the *same* Euler angles as those set by setRotationDegrees(),
but the rotation will be equivalent, i.e. will have the same result when used to rotate a vector or node.
NOTE: It will (usually) give wrong results when further transformations have been added in the matrix (like shear).
WARNING: There have been troubles with this function over the years and we may still have missed some corner cases.
@ -202,9 +202,9 @@ namespace core
//! Returns the rotation, as set by setRotation().
/** NOTE: You will have the same end-rotation as used in setRotation, but it might not use the same axis values.
NOTE: This only works correct if no other matrix operations have been done on the inner 3x3 matrix besides
NOTE: This only works correct if no other matrix operations have been done on the inner 3x3 matrix besides
setting rotation (so no scale/shear). Thought it (probably) works as long as scale doesn't flip handedness.
NOTE: It does not necessarily return the *same* Euler angles as those set by setRotationDegrees(),
NOTE: It does not necessarily return the *same* Euler angles as those set by setRotationDegrees(),
but the rotation will be equivalent, i.e. will have the same result when used to rotate a vector or node.
*/
core : : vector3d < T > getRotationDegrees ( ) const ;
@ -233,7 +233,7 @@ namespace core
//! Translate a vector by the inverse of the translation part of this matrix.
void inverseTranslateVect ( vector3df & vect ) const ;
//! Tranform (rotate/scale) a vector by the inverse of the rotation part this matrix
//! Trans form (rotate/scale) a vector by the inverse of the rotation part this matrix
void inverseRotateVect ( vector3df & vect ) const ;
//! Transform (rotate/scale) a vector by the rotation part of this matrix.
@ -905,8 +905,8 @@ namespace core
//! Returns a rotation which (mostly) works in combination with the given scale
/**
This code was originally written by by Chev (assuming no scaling back then,
/**
This code was originally written by by Chev (assuming no scaling back then,
we can be blamed for all problems added by regarding scale)
*/
template < class T >
@ -952,16 +952,16 @@ namespace core
template < class T >
inline core : : vector3d < T > CMatrix4 < T > : : getRotationDegrees ( ) const
{
// Note: Using getScale() here make it look like it could do matrix decomposition.
// It can't! It works (or should work) as long as rotation doesn't flip the handedness
// aka scale swapping 1 or 3 axes. (I think we could catch that as well by comparing
// crossproduct of first 2 axes to direction of third axis, but TODO)
// And maybe it should also offer the solution for the simple calculation
// Note: Using getScale() here make it look like it could do matrix decomposition.
// It can't! It works (or should work) as long as rotation doesn't flip the handedness
// aka scale swapping 1 or 3 axes. (I think we could catch that as well by comparing
// cross product of first 2 axes to direction of third axis, but TODO)
// And maybe it should also offer the solution for the simple calculation
// without regarding scaling as Irrlicht did before 1.7
core : : vector3d < T > scale ( getScale ( ) ) ;
// We assume the matrix uses rotations instead of negative scaling 2 axes.
// Otherwise it fails even for some simple cases, like rotating around
// Otherwise it fails even for some simple cases, like rotating around
// 2 axes by 180<38> which getScale thinks is a negative scaling.
if ( scale . Y < 0 & & scale . Z < 0 )
{
@ -2092,7 +2092,7 @@ namespace core
core : : vector3df v ( vs ) ;
v . normalize ( ) ;
// cosinus angle
// cosine angle
T ca = f . dotProduct ( t ) ;
core : : vector3df vt ( v * ( 1 - ca ) ) ;
@ -2153,7 +2153,7 @@ namespace core
// axis multiplication by sin
const core : : vector3df vs = look . crossProduct ( from ) ;
// cosinus angle
// cosine angle
const f32 ca = from . dotProduct ( look ) ;
core : : vector3df vt ( up * ( 1.f - ca ) ) ;