1#ifndef FUSED_ALGORITHMS_SKEW_SYMMETRIC_H
2#define FUSED_ALGORITHMS_SKEW_SYMMETRIC_H
92 static_assert(is_floating_point_v<T>,
93 "rodrigues requires a floating-point scalar type");
99 T norm =
norm2(omega);
111 R(0, 1) += t * S(0, 1);
112 R(0, 2) += t * S(0, 2);
113 R(1, 0) += t * S(1, 0);
114 R(1, 2) += t * S(1, 2);
115 R(2, 0) += t * S(2, 0);
116 R(2, 1) += t * S(2, 1);
123 omega_hat(0) = omega(0) / norm;
124 omega_hat(1) = omega(1) / norm;
125 omega_hat(2) = omega(2) / norm;
142 R(i, j) = I(i, j) + s * K(i, j) + (T(1) - c) * K2(i, j);
Definition fused_matrix.h:12
FusedMatrix & setIdentity(void)
Definition fused_matrix.h:234
static FusedMatrix< T, Rows, Cols > matmul(const BaseExpr< LeftExpr > &mat1, const BaseExpr< RightExpr > &mat2)
Definition fused_matrix.h:255
Definition fused_vector.h:9
Global configuration for the tesseract tensor library.
#define my_size_t
Size/index type used throughout the library.
Definition config.h:126
#define PRECISION_TOLERANCE
Tolerance for floating-point comparisons (e.g. symmetry checks, Cholesky).
Definition config.h:117
T cos(T x)
Definition cos.h:7
constexpr T sin(T x) noexcept
Compute the sine of a floating-point value (radians).
Definition math_utils.h:70
FusedMatrix< T, 3, 3 > skew_symmetric(const FusedVector< T, 3 > &v)
Construct the 3×3 skew-symmetric matrix [v]× from a 3-vector.
Definition skew_symmetric.h:65
T norm2(const FusedVector< T, N > &v)
Compute the Euclidean (2-norm) of a vector: √(Σ vᵢ²).
Definition norms.h:68
FusedMatrix< T, 3, 3 > rodrigues(const FusedVector< T, 3 > &omega, T t=T(1))
Compute the rotation matrix R = exp(t · [ω]×) via Rodrigues formula.
Definition skew_symmetric.h:90