# 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 ) ; }

Advertisements