39 class TMatrixS :
public MatrixBase<size, T> {
41 constexpr TMatrixS()
noexcept: MatrixBase<size, T>() {}
43 template<
class ...U>
constexpr TMatrixS(
const TVectorS<size, T>& first,
const U&... next)
noexcept: MatrixBase<size, T>(first, next...) {}
45 constexpr explicit TMatrixS(T value)
noexcept: MatrixBase<size, T>(value) {}
47 template<
class U>
constexpr explicit TMatrixS(
const TMatrixS<size, U>& other)
noexcept: MatrixBase<size, T>((MatrixBase<size, U>)other) {}
49 template<std::
size_t otherSize>
constexpr explicit TMatrixS(
const TMatrixS<otherSize, T>& other)
noexcept: MatrixBase<size, T>((MatrixBase<otherSize, T>)other) {}
51 constexpr TMatrixS(
const TMatrixS<size, T>& other)
noexcept: MatrixBase<size, T>((MatrixBase<size, T>)other) {}
54 bool isOrthogonal()
const {
return MatrixBase<size, T>::isOrthogonal(); };
57 T
trace()
const {
return MatrixBase<size, T>::trace(); }
60 TMatrixS<size-1, T>
ij(std::size_t skipCol, std::size_t skipRow)
const {
return (TMatrixS<size-1, T>)MatrixBase<size-1, T>::ij(skipCol, skipRow); }
63 T
cofactor(std::size_t col, std::size_t row)
const {
return MatrixBase<size, T>::cofactor(col, row); }
66 TMatrixS<size, T>
comatrix()
const {
return (TMatrixS<size, T>)MatrixBase<size, T>::comatrix(); }
69 TMatrixS<size, T>
adjugate()
const {
return (TMatrixS<size, T>)MatrixBase<size, T>::adjugate(); }
72 T
determinant()
const {
return MatrixBase<size, T>::determinant(); }
75 TMatrixS<size, T>
inverted()
const {
return (TMatrixS<size, T>)MatrixBase<size, T>::inverted(); }
78 TMatrixS<size, T>
invertedOrthogonal()
const {
return (TMatrixS<size, T>)MatrixBase<size, T>::invertedOrthogonal(); }
83 TVectorS<size, T> operator*(
const TVectorS<size, T>& other)
const {
return (TVectorS<size, T>)MatrixBase<size, T>::operator*(other); }
86 TMatrixS<size, T>
transposed()
const {
return (TMatrixS<size, T>)MatrixBase<size, T>::transposed(); }
89 static TMatrixS<size, T>&
from(T* data) {
return (TMatrixS<size, T>)MatrixBase<size, T>::from(data); }
92 static const TMatrixS<size, T>&
from(
const T* data) {
return (TMatrixS<size, T>)MatrixBase<size, T>::from(data); }
97 TMatrixS<size, T>& operator+=(
const TMatrixS<size, T>& other) {
98 MatrixBase<size, T>::operator+=((MatrixBase<size, T>)other);
101 TMatrixS<size, T> operator+(
const TMatrixS<size, T>& other)
const {
102 return (TMatrixS<size, T>)MatrixBase<size, T>::operator+((MatrixBase<size, T>)other);
104 TMatrixS<size, T>& operator-=(
const TMatrixS<size, T>& other) {
105 MatrixBase<size, T>::operator-=((MatrixBase<size, T>)other);
108 TMatrixS<size, T> operator-(
const TMatrixS<size, T>& other)
const {
109 return (TMatrixS<size, T>)MatrixBase<size, T>::operator-((MatrixBase<size, T>)other);
111 TMatrixS<size, T>& operator*=(T number) {
112 MatrixBase<size, T>::operator*=(number);
115 TMatrixS<size, T> operator*(T number)
const {
116 return (TMatrixS<size, T>)MatrixBase<size, T>::operator*(number);
118 TMatrixS<size, T>& operator/=(T number) {
119 MatrixBase<size, T>::operator/=(number);
122 TMatrixS<size, T> operator/(T number)
const {
123 return (TMatrixS<size, T>)MatrixBase<size, T>::operator/(number);
128 return (TMatrixS<size, T>)MatrixBase<size, T>::flippedCols();
133 return (TMatrixS<size, T>)MatrixBase<size, T>::flippedRows();