# Arbitrary axis angle rotation C++ code, ROW MAJOR

/// Arbitrary axis angle rotation
Matrix Matrix::Rotation( const Vector & u, real radians )
{
real c = cos( radians ) ;
real l_c = 1 - c ;
real s = sin( radians ) ;
//ROW MAJOR
return Matrix(
u.x*u.x + (1 - u.x*u.x)*c, u.x*u.y*l_c + u.z*s, u.x*u.z*l_c - u.y*s, 0,
u.x*u.y*l_c - u.z*s, u.y*u.y+(1 - u.y*u.y)*c, u.y*u.z*l_c + u.x*s, 0,
u.x*u.z*l_c + u.y*s, u.y*u.z*l_c - u.x*s, u.z*u.z + (1 - u.z*u.z)*c, 0,
0, 0, 0, 1
) ;
}

# Arbitrary axis angle rotation C++ code, __COLUMN__ MAJOR

/// Arbitrary axis angle rotation
Matrix Matrix::Rotation( const Vector & u, real radians )
{
real c = cos( radians ) ;
real l_c = 1 - c ;
real s = sin( radians ) ;
//COLUMN MAJOR
return Matrix(
u.x*u.x + (1 - u.x*u.x)*c, u.x*u.y*l_c - u.z*s, u.x*u.z*l_c + u.y*s, 0,
u.x*u.y*l_c + u.z*s, u.y*u.y+(1 - u.y*u.y)*c, u.y*u.z*l_c - u.x*s, 0,
u.x*u.z*l_c - u.y*s, u.y*u.z*l_c + u.x*s, u.z*u.z + (1 - u.z*u.z)*c, 0,
0, 0, 0, 1
) ;
}

### Like this:

Like Loading...

*Related*