backup closest working example, no errors or warnings from compile, matrices arent correct though yet.
This commit is contained in:
marauder2k7 2024-07-28 19:36:07 +01:00
parent 888332a85c
commit c61d36b799
2 changed files with 67 additions and 10 deletions

View file

@ -796,15 +796,8 @@ public:
}
}
void invertTo(Matrix<DATA_TYPE, cols, rows>* matrix) {
Matrix<DATA_TYPE, rows, cols> invMatrix = this->inverse();
for (U32 i = 0; i < rows; ++i) {
for (U32 j = 0; j < cols; ++j) {
(*matrix)(j, i) = invMatrix(i, j);
}
}
}
void invertTo(Matrix<DATA_TYPE, cols, rows>* matrix) const;
void invertTo(Matrix<DATA_TYPE, cols, rows>* matrix);
void dumpMatrix(const char* caption = NULL) const;
// Static identity matrix
@ -1157,6 +1150,47 @@ inline VectorF Matrix<DATA_TYPE, rows, cols>::getUpVector() const
return vec;
}
template<typename DATA_TYPE, U32 rows, U32 cols>
inline void Matrix<DATA_TYPE, rows, cols>::invertTo(Matrix<DATA_TYPE, cols, rows>* matrix) const
{
Matrix<DATA_TYPE, rows, cols> invMatrix;
for (U32 i = 0; i < rows; ++i) {
for (U32 j = 0; j < cols; ++j) {
invMatrix(i, j) = (*this)(i, j);
}
}
invMatrix.inverse();
for (U32 i = 0; i < rows; ++i) {
for (U32 j = 0; j < cols; ++j) {
(*matrix)(j, i) = invMatrix(i, j);
}
}
(*matrix)(3, 0) = (*this)(3, 0);
(*matrix)(3, 1) = (*this)(3, 1);
(*matrix)(3, 2) = (*this)(3, 2);
(*matrix)(3, 3) = (*this)(3, 3);
}
template<typename DATA_TYPE, U32 rows, U32 cols>
inline void Matrix<DATA_TYPE, rows, cols>::invertTo(Matrix<DATA_TYPE, cols, rows>* matrix)
{
Matrix<DATA_TYPE, rows, cols> invMatrix = this->inverse();
for (U32 i = 0; i < rows; ++i) {
for (U32 j = 0; j < cols; ++j) {
(*matrix)(i, j) = invMatrix(i, j);
}
}
(*matrix)(3, 0) = (*this)(3, 0);
(*matrix)(3, 1) = (*this)(3, 1);
(*matrix)(3, 2) = (*this)(3, 2);
(*matrix)(3, 3) = (*this)(3, 3);
}
template<typename DATA_TYPE, U32 rows, U32 cols>
inline void Matrix<DATA_TYPE, rows, cols>::setRow(S32 row, const Point4F& cptr) {
if(cols >= 2)