diff --git a/docs/source/nnls_modeling.rst b/docs/source/nnls_modeling.rst index c68a35948..19384a6ed 100644 --- a/docs/source/nnls_modeling.rst +++ b/docs/source/nnls_modeling.rst @@ -1815,7 +1815,7 @@ quaternion and matrix) we provide a handy set of templated functions. These functions are templated so that the user can use them within Ceres Solver's automatic differentiation framework. -.. function:: void AngleAxisToQuaternion(T const* angle_axis, T* quaternion) +.. function:: template void AngleAxisToQuaternion(T const* angle_axis, T* quaternion) Convert a value in combined axis-angle representation to a quaternion. @@ -1824,7 +1824,7 @@ within Ceres Solver's automatic differentiation framework. and whose direction is aligned with the axis of rotation, and ``quaternion`` is a 4-tuple that will contain the resulting quaternion. -.. function:: void QuaternionToAngleAxis(T const* quaternion, T* angle_axis) +.. function:: template void QuaternionToAngleAxis(T const* quaternion, T* angle_axis) Convert a quaternion to the equivalent combined axis-angle representation. @@ -1834,17 +1834,17 @@ within Ceres Solver's automatic differentiation framework. whose norm is the angle of rotation in radians, and whose direction is the axis of rotation. -.. function:: void RotationMatrixToAngleAxis(const MatrixAdapter& R, T * angle_axis) -.. function:: void AngleAxisToRotationMatrix(T const * angle_axis, const MatrixAdapter& R) -.. function:: void RotationMatrixToAngleAxis(T const * R, T * angle_axis) -.. function:: void AngleAxisToRotationMatrix(T const * angle_axis, T * R) +.. function:: template void RotationMatrixToAngleAxis(const MatrixAdapter& R, T * angle_axis) +.. function:: template void AngleAxisToRotationMatrix(T const * angle_axis, const MatrixAdapter& R) +.. function:: template void RotationMatrixToAngleAxis(T const * R, T * angle_axis) +.. function:: template void AngleAxisToRotationMatrix(T const * angle_axis, T * R) Conversions between 3x3 rotation matrix with given column and row strides and axis-angle rotation representations. The functions that take a pointer to T instead of a MatrixAdapter assume a column major representation with unit row stride and a column stride of 3. -.. function:: void EulerAnglesToRotationMatrix(const T* euler, const MatrixAdapter& R) -.. function:: void EulerAnglesToRotationMatrix(const T* euler, int row_stride, T* R) +.. function:: template void EulerAnglesToRotationMatrix(const T* euler, const MatrixAdapter& R) +.. function:: template void EulerAnglesToRotationMatrix(const T* euler, int row_stride, T* R) Conversions between 3x3 rotation matrix with given column and row strides and Euler angle (in degrees) rotation representations. @@ -1857,8 +1857,8 @@ within Ceres Solver's automatic differentiation framework. major representation with unit column stride and a row stride of 3. The additional parameter row_stride is required to be 3. -.. function:: void QuaternionToScaledRotation(const T q[4], const MatrixAdapter& R) -.. function:: void QuaternionToScaledRotation(const T q[4], T R[3 * 3]) +.. function:: template void QuaternionToScaledRotation(const T q[4], const MatrixAdapter& R) +.. function:: template void QuaternionToScaledRotation(const T q[4], T R[3 * 3]) Convert a 4-vector to a 3x3 scaled rotation matrix. @@ -1887,13 +1887,13 @@ within Ceres Solver's automatic differentiation framework. such that :math:`\det(Q) = 1` and :math:`Q*Q' = I`. -.. function:: void QuaternionToRotation(const T q[4], const MatrixAdapter& R) -.. function:: void QuaternionToRotation(const T q[4], T R[3 * 3]) +.. function:: template void QuaternionToRotation(const T q[4], const MatrixAdapter& R) +.. function:: template void QuaternionToRotation(const T q[4], T R[3 * 3]) Same as above except that the rotation matrix is normalized by the Frobenius norm, so that :math:`R R' = I` (and :math:`\det(R) = 1`). -.. function:: void UnitQuaternionRotatePoint(const T q[4], const T pt[3], T result[3]) +.. function:: template void UnitQuaternionRotatePoint(const T q[4], const T pt[3], T result[3]) Rotates a point pt by a quaternion q: @@ -1904,23 +1904,23 @@ within Ceres Solver's automatic differentiation framework. result you get for a unit quaternion. -.. function:: void QuaternionRotatePoint(const T q[4], const T pt[3], T result[3]) +.. function:: template void QuaternionRotatePoint(const T q[4], const T pt[3], T result[3]) With this function you do not need to assume that :math:`q` has unit norm. It does assume that the norm is non-zero. -.. function:: void QuaternionProduct(const T z[4], const T w[4], T zw[4]) +.. function:: template void QuaternionProduct(const T z[4], const T w[4], T zw[4]) .. math:: zw = z * w where :math:`*` is the Quaternion product between 4-vectors. -.. function:: void CrossProduct(const T x[3], const T y[3], T x_cross_y[3]) +.. function:: template void CrossProduct(const T x[3], const T y[3], T x_cross_y[3]) .. math:: \text{x_cross_y} = x \times y -.. function:: void AngleAxisRotatePoint(const T angle_axis[3], const T pt[3], T result[3]) +.. function:: template void AngleAxisRotatePoint(const T angle_axis[3], const T pt[3], T result[3]) .. math:: y = R(\text{angle_axis}) x diff --git a/docs/source/version_history.rst b/docs/source/version_history.rst index 78d354db1..5d148b32a 100644 --- a/docs/source/version_history.rst +++ b/docs/source/version_history.rst @@ -30,6 +30,7 @@ Backward Incompatible API Changes Bug Fixes & Minor Changes ------------------------- +#. Fix documentation source for templated function in ``rotation.h``. #. Add ``package.xml`` to enable Catkin builds. (Damon Kohler) #. Relaxing Jacobian matching in Gradient Checker test. (David Gossow) #. Allow SubsetParameterization to hold all parameters constant