9 #include <aliceVision/mvsData/Matrix3x3.hpp>
10 #include <aliceVision/mvsData/Point3d.hpp>
11 #include <aliceVision/mvsData/StaticVector.hpp>
12 #include <aliceVision/system/Logger.hpp>
23 double m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34;
49 m11 * _p.x + m12 * _p.y + m13 * _p.z + m14, m21 * _p.x + m22 * _p.y + m23 * _p.z + m24, m31 * _p.x + m32 * _p.y + m33 * _p.z + m34);
52 inline double deteminant()
const
54 return m11 * m22 * m33 - m11 * m23 * m32 - m12 * m21 * m33 + m12 * m23 * m31 + m13 * m21 * m32 - m13 * m22 * m31;
72 inline Point3d lastColumn()
const
86 const bool cam_affine = (K.m33 == 0);
94 ALICEVISION_LOG_ERROR(m11 <<
" " << m12 <<
" " << m13 <<
" " << m14);
95 ALICEVISION_LOG_ERROR(m21 <<
" " << m22 <<
" " << m23 <<
" " << m24);
96 ALICEVISION_LOG_ERROR(m31 <<
" " << m32 <<
" " << m33 <<
" " << m34);
97 throw std::runtime_error(
"Matrix3x4::decomposeProjectionMatrix: affine camera.");
102 Matrix3x3 D = diag3x3(-1.0f, -1.0f, 1.0f);
109 Matrix3x3 D = diag3x3(1.0f, -1.0f, -1.0f);
114 C = (-sub3x3()).mldivide(lastColumn());
121 m.m11 = M1.m11 * M2.m11 + M1.m12 * M2.m21 + M1.m13 * M2.m31;
122 m.m12 = M1.m11 * M2.m12 + M1.m12 * M2.m22 + M1.m13 * M2.m32;
123 m.m13 = M1.m11 * M2.m13 + M1.m12 * M2.m23 + M1.m13 * M2.m33;
124 m.m14 = M1.m11 * M2.m14 + M1.m12 * M2.m24 + M1.m13 * M2.m34;
126 m.m21 = M1.m21 * M2.m11 + M1.m22 * M2.m21 + M1.m23 * M2.m31;
127 m.m22 = M1.m21 * M2.m12 + M1.m22 * M2.m22 + M1.m23 * M2.m32;
128 m.m23 = M1.m21 * M2.m13 + M1.m22 * M2.m23 + M1.m23 * M2.m33;
129 m.m24 = M1.m21 * M2.m14 + M1.m22 * M2.m24 + M1.m23 * M2.m34;
131 m.m31 = M1.m31 * M2.m11 + M1.m32 * M2.m21 + M1.m33 * M2.m31;
132 m.m32 = M1.m31 * M2.m12 + M1.m32 * M2.m22 + M1.m33 * M2.m32;
133 m.m33 = M1.m31 * M2.m13 + M1.m32 * M2.m23 + M1.m33 * M2.m33;
134 m.m34 = M1.m31 * M2.m14 + M1.m32 * M2.m24 + M1.m33 * M2.m34;
139 inline Matrix3x4 operator|(
const Matrix3x3& M,
const Point3d& p)