28 virtual void forward (CoordT::iterator out,
29 CoordT::const_iterator in)
const = 0;
36 virtual std::string
to_string (
void)
const = 0;
40 virtual void access (std::function<
void(
const MatrixT&)> cb)
const = 0;
70 void forward (CoordT::iterator out,
71 CoordT::const_iterator in)
const override;
143 #endif // TEQ_COORD_HPP const RankT rank_cap
Number of dimsensions in a shape/coordinate.
Definition: shape.hpp:47
bool is_bijective(void) const override
Implementation of iCoordMap.
Definition: coord.hpp:95
iCoordMap * connect(const iCoordMap &rhs) const override
Implementation of iCoordMap.
Definition: coord.hpp:58
virtual void forward(CoordT::iterator out, CoordT::const_iterator in) const =0
Forward transform coordinates.
double determinant(const MatrixT &mat)
Return the determinant of matrix.
std::string to_string(const MatrixT &mat)
Return the string representation of input matrix.
uint8_t RankT
Type used for shape rank.
Definition: shape.hpp:23
CoordptrT extend(RankT rank, std::vector< DimT > ext)
std::shared_ptr< iCoordMap > CoordptrT
Type of iCoordMap smartpointer.
Definition: coord.hpp:106
CoordptrT reduce(RankT rank, std::vector< DimT > red)
const size_t mat_size
Number of bytes in a homogeneous matrix.
Definition: matops.hpp:25
Interface for transforming coordinates and reversing the coordinate.
Definition: coord.hpp:20
iCoordMap * reverse(void) const override
Implementation of iCoordMap.
Definition: coord.hpp:74
MatrixT fwd_
Forward transformation matrix.
Definition: coord.hpp:102
CoordptrT identity
Identity matrix instance.
virtual std::string to_string(void) const =0
Return string representation of coordinate transformer.
void inverse(MatrixT out, const MatrixT &in)
Inverse in matrix and dump to out matrix.
void forward(CoordT::iterator out, CoordT::const_iterator in) const override
Implementation of iCoordMap.
virtual iCoordMap * connect(const iCoordMap &rhs) const =0
Return matmul(this, rhs)
virtual ~iCoordMap(void)=default
virtual bool is_bijective(void) const =0
Return true if this instance maps coordinates/shapes bijectively.
std::string to_string(void) const override
Implementation of iCoordMap.
Definition: coord.hpp:83
virtual void access(std::function< void(const MatrixT &)> cb) const =0
CoordptrT permute(std::vector< RankT > order)
void access(std::function< void(const MatrixT &)> cb) const override
Implementation of iCoordMap.
Definition: coord.hpp:89
CoordMap(std::function< void(MatrixT)> init)
Definition: coord.hpp:50
double[mat_dim][mat_dim] MatrixT
Coordinate transformation matrix (using homogeneous)
Definition: matops.hpp:28
void matmul(MatrixT out, const MatrixT &lhs, const MatrixT &rhs)
Apply matrix multiplication for lhs and rhs to out matrix.
bool is_identity(iCoordMap *coorder)
Checks if the coord mapper is an identity mapper.
virtual iCoordMap * reverse(void) const =0
CoordptrT flip(RankT dim)