15template <linalg::Field T>
19template <linalg::Field T>
27template <linalg::SquareMatrix Mat>
41template <linalg::MatrixContainer Mat>
45 "make_selector_map index must be within [0, mat_cols)");
62template <linalg::MatrixContainer Mat>
90 constexpr explicit AffineMap(
const Mat& U_in) : U(U_in) {}
107 : U(get_block<0,
M, 0,
N>(H)),
108 c(as_vector(get_block<0,
M,
N,
N + 1>(H))) {}
124 template <linalg::MatrixContainer OtherMat>
125 requires(std::same_as<T, linalg::matrix_scalar_t<OtherMat>> &&
149 static_assert(
M >=
N,
"short-fat TBD");
151 static_cast<void>(event);
177 return is_equal(other);
188 return !is_equal(other);
215 const auto translation_equal =
217 return linear_equal && translation_equal;
AffineMap class definition.
constexpr auto linear_part() const
linear part
constexpr bool operator==(const AffineMap< Mat > &other) const
equality comparison overload
linalg::Vector< T, M > AmbientVec
alias for underlying vector spanning R^m (codomain)
constexpr AffineMap()
CTOR.
linalg::matrix_scalar_t< Mat > T
alias to extract underlying type of affine set
constexpr AffineMap(const Mat &U_in)
CTOR.
static constexpr std::size_t M
helpers to extracting M x N matrix
constexpr auto operator()(const DomVec &x) const
transform point to coords
constexpr AffineMap(const Mat &U_in, const AmbientVec &c_in)
CTOR.
constexpr auto translation() const
translation
static constexpr std::size_t N
constexpr AffineMap(const linalg::Matrix< T, M+1, N+1 > &H)
CTOR.
constexpr auto inverse() const
inverse mapping
constexpr auto compose(const AffineMap< OtherMat > &other) const
compose function
constexpr bool operator!=(const AffineMap< Mat > &other) const
inequality comparison overload
constexpr AffineMap< Mat > make_map_id()
make map ID
constexpr AffineMap< Mat > make_selector_map(std::size_t idx)
make map selector
constexpr std::size_t mat_rows_v
Registered compile-time row count after cv/ref normalization.
typename mat_traits< remove_cvref_t< Mat > >::value_type matrix_scalar_t
Registered matrix scalar type after cv/ref normalization.
Owning, fixed-size, row-major matrix container over a scalar field.
Owning, fixed-size vector container.