24template<
typename T,
typename AngleT>
32template<
typename T,
typename AngleT>
39template<
typename T,
typename AngleT>
49 if (
sin <= std::numeric_limits<T>::epsilon()) {
70template<
typename T,
typename AngleT>
75 AngleT half_angle = axis_angle.
angle() / 2;
89template<
typename T,
typename AngleT>
96template<
typename T,
typename AngleT>
101 if (axis.x == T(1)) {
104 else if (axis.y == T(1)) {
107 else if (axis.z == T(1)) {
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
SIMD_FORCE_INLINE btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
T cos(const AngleRadianBase< T > &a)
QuaternionBase< T > to_quaternion(const AxisAngleBase< T, AngleT > &axis_angle)
T to_vector(const Axis axis)
QuaternionBase< T > normalize_and_get_length(const QuaternionBase< T > &q, T &out_length)
bool is_unit_scale(const MatBase< T, NumCol, NumRow > &m)
AxisSigned cross(const AxisSigned a, const AxisSigned b)
T sin(const AngleRadianBase< T > &a)
VecBase< T, 3 > orthogonal(const VecBase< T, 3 > &v)
Euler3Base< T > to_euler(const AxisAngleBase< T, AngleT > &axis_angle, EulerOrder order)
const AngleT & angle() const
const vec3_type & axis() const