Base: Use nested std::array for Matrix4D class

This commit is contained in:
wmayer
2025-05-13 15:56:20 +02:00
committed by Ladislav Michl
parent 74a22df884
commit abe64f7576
2 changed files with 24 additions and 26 deletions

View File

@@ -35,30 +35,30 @@ using namespace Base;
// clang-format off
Matrix4D::Matrix4D()
: dMtrx4D {{1., 0., 0., 0.},
{0., 1., 0., 0.},
{0., 0., 1., 0.},
{0., 0., 0., 1.}}
: dMtrx4D {{{1., 0., 0., 0.},
{0., 1., 0., 0.},
{0., 0., 1., 0.},
{0., 0., 0., 1.}}}
{}
Matrix4D::Matrix4D(float a11, float a12, float a13, float a14,
float a21, float a22, float a23, float a24,
float a31, float a32, float a33, float a34,
float a41, float a42, float a43, float a44)
: dMtrx4D {{a11, a12, a13, a14},
{a21, a22, a23, a24},
{a31, a32, a33, a34},
{a41, a42, a43, a44}}
: dMtrx4D {{{a11, a12, a13, a14},
{a21, a22, a23, a24},
{a31, a32, a33, a34},
{a41, a42, a43, a44}}}
{}
Matrix4D::Matrix4D(double a11, double a12, double a13, double a14,
double a21, double a22, double a23, double a24,
double a31, double a32, double a33, double a34,
double a41, double a42, double a43, double a44)
: dMtrx4D {{a11, a12, a13, a14},
{a21, a22, a23, a24},
{a31, a32, a33, a34},
{a41, a42, a43, a44}}
: dMtrx4D {{{a11, a12, a13, a14},
{a21, a22, a23, a24},
{a31, a32, a33, a34},
{a41, a42, a43, a44}}}
{}
// clang-format on
@@ -700,15 +700,12 @@ void Matrix4D::Print() const
void Matrix4D::transpose()
{
double dNew[4][4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
dNew[j][i] = dMtrx4D[i][j];
}
}
memcpy(dMtrx4D, dNew, sizeof(dMtrx4D));
std::swap(dMtrx4D[0][1], dMtrx4D[1][0]);
std::swap(dMtrx4D[0][2], dMtrx4D[2][0]);
std::swap(dMtrx4D[0][3], dMtrx4D[3][0]);
std::swap(dMtrx4D[1][2], dMtrx4D[2][1]);
std::swap(dMtrx4D[1][3], dMtrx4D[3][1]);
std::swap(dMtrx4D[2][3], dMtrx4D[3][2]);
}