27#ifndef FR2_MATRIXCTA_HPP
28#define FR2_MATRIXCTA_HPP
30#include "matrixCT.hpp"
38template <
class T,const
int size>
65template <
class T,const
int size>
70 : m_mat(m), m_vec(t) {};
76template <
class T,const
int size>
77inline FutMatrixCTAC<T,size> FutMatrixCTAC<T,size>::operator*(
79 const FutMatrixCTAC<T,size>& m2)
const
81 FutMatrixCTAC<T,size> retval;
83 retval.m_mat = m_mat * m2.m_mat;
84 retval.m_vec = m_vec + fr2MatMulCT<T,size,size,1>(m_mat,m2.m_vec);
97inline FR2Vect2TC<T> operator*(
99 const FutMatrixCTAC<T,2>& m,
102 FR2Vect2TC<T> retval;
104 retval.x1 = m.m_mat[0][0] * v.x1 + m.m_mat[0][1] * v.x2 + m.m_vec[0][0];
105 retval.x2 = m.m_mat[1][0] * v.x1 + m.m_mat[1][1] * v.x2 + m.m_vec[1][0];
111inline FR2Vect3TC<T> operator*(
113 const FutMatrixCTAC<T,3>& m,
116 return FR2Vect3TC<T>(
118 m.m_mat[0][0]*v.x1 + m.m_mat[0][1]*v.x2 + m.m_mat[0][2]*v.x3 +
120 m.m_mat[1][0]*v.x1 + m.m_mat[1][1]*v.x2 + m.m_mat[1][2]*v.x3 +
122 m.m_mat[2][0]*v.x1 + m.m_mat[2][1]*v.x2 + m.m_mat[2][2]*v.x3 +
126template<
class T,const
int size>
127std::ostream& operator<<(std::ostream& s,
const FutMatrixCTAC<T,size> &v)
129 s <<
"mat: " << v.m_mat <<
'\n';
130 s <<
"vec: " << v.m_vec <<
'\n';