10 #ifndef EIGEN_ANGLEAXIS_H 11 #define EIGEN_ANGLEAXIS_H 14 #include "./InternalHeaderCheck.h" 45 template <
typename Scalar_>
46 struct traits<AngleAxis<Scalar_> > {
47 typedef Scalar_ Scalar;
51 template <
typename Scalar_>
52 class AngleAxis :
public RotationBase<AngleAxis<Scalar_>, 3> {
53 typedef RotationBase<AngleAxis<Scalar_>, 3> Base;
56 using Base::operator*;
77 template <
typename Derived>
83 template <
typename QuatDerived>
88 template <
typename Derived>
99 EIGEN_DEVICE_FUNC
const Vector3&
axis()
const {
return m_axis; }
124 template <
class QuatDerived>
126 template <
typename Derived>
129 template <
typename Derived>
138 template <
typename NewScalarType>
139 EIGEN_DEVICE_FUNC
inline typename internal::cast_return_type<AngleAxis, AngleAxis<NewScalarType> >::type
cast()
141 return typename internal::cast_return_type<AngleAxis, AngleAxis<NewScalarType> >::type(*
this);
145 template <
typename OtherScalarType>
147 m_axis = other.axis().template cast<Scalar>();
148 m_angle =
Scalar(other.angle());
159 return m_axis.isApprox(other.m_axis, prec) && internal::isApprox(m_angle, other.m_angle, prec);
176 template <
typename Scalar>
177 template <
typename QuatDerived>
179 EIGEN_USING_STD(atan2)
187 m_axis = q.
vec() / n;
197 template <
typename Scalar>
198 template <
typename Derived>
208 template <
typename Scalar>
209 template <
typename Derived>
216 template <
typename Scalar>
226 tmp = cos1_axis.x() * m_axis.y();
227 res.
coeffRef(0, 1) = tmp - sin_axis.z();
228 res.
coeffRef(1, 0) = tmp + sin_axis.z();
230 tmp = cos1_axis.x() * m_axis.z();
231 res.
coeffRef(0, 2) = tmp + sin_axis.y();
232 res.
coeffRef(2, 0) = tmp - sin_axis.y();
234 tmp = cos1_axis.y() * m_axis.z();
235 res.
coeffRef(1, 2) = tmp - sin_axis.x();
236 res.
coeffRef(2, 1) = tmp + sin_axis.x();
238 res.diagonal() = (cos1_axis.cwiseProduct(m_axis)).array() + c;
245 #endif // EIGEN_ANGLEAXIS_H constexpr CoeffReturnType w() const
Definition: Quaternion.h:66
AngleAxis(const Scalar &angle, const MatrixBase< Derived > &axis)
Definition: AngleAxis.h:78
const Vector3 & axis() const
Definition: AngleAxis.h:99
QuaternionType operator*(const AngleAxis &other) const
Definition: AngleAxis.h:107
Vector3 & axis()
Definition: AngleAxis.h:104
Scalar_ Scalar
Definition: AngleAxis.h:60
Namespace containing all symbols from the Eigen library.
Definition: B01_Experimental.dox:1
QuaternionType operator*(const QuaternionType &other) const
Definition: AngleAxis.h:112
AngleAxis< double > AngleAxisd
Definition: AngleAxis.h:168
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
Definition: NumTraits.h:232
internal::cast_return_type< AngleAxis, AngleAxis< NewScalarType > >::type cast() const
Definition: AngleAxis.h:139
Scalar & angle()
Definition: AngleAxis.h:96
AngleAxis(const AngleAxis< OtherScalarType > &other)
Definition: AngleAxis.h:146
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_cos_op< typename Derived::Scalar >, const Derived > cos(const Eigen::ArrayBase< Derived > &x)
AngleAxis< float > AngleAxisf
Definition: AngleAxis.h:165
Scalar angle() const
Definition: AngleAxis.h:94
AngleAxis()
Definition: AngleAxis.h:71
const VectorBlock< const Coefficients, 3 > vec() const
Definition: Quaternion.h:78
Base class for quaternion expressions.
Definition: ForwardDeclarations.h:457
AngleAxis inverse() const
Definition: AngleAxis.h:122
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_abs_op< typename Derived::Scalar >, const Derived > abs(const Eigen::ArrayBase< Derived > &x)
bool isApprox(const AngleAxis &other, const typename NumTraits< Scalar >::Real &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: AngleAxis.h:157
The quaternion class used to represent 3D orientations and rotations.
Definition: ForwardDeclarations.h:467
constexpr Scalar & coeffRef(Index rowId, Index colId)
Definition: PlainObjectBase.h:191
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:186
AngleAxis(const MatrixBase< Derived > &m)
Definition: AngleAxis.h:89
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:52
Represents a 3D rotation as a rotation angle around an arbitrary 3D axis.
Definition: ForwardDeclarations.h:461
AngleAxis(const QuaternionBase< QuatDerived > &q)
Definition: AngleAxis.h:84
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_sin_op< typename Derived::Scalar >, const Derived > sin(const Eigen::ArrayBase< Derived > &x)
Matrix3 toRotationMatrix(void) const
Definition: AngleAxis.h:217
friend QuaternionType operator*(const QuaternionType &a, const AngleAxis &b)
Definition: AngleAxis.h:117