diff options
Diffstat (limited to 'intern/moto/include/MT_Matrix3x3.h')
-rw-r--r-- | intern/moto/include/MT_Matrix3x3.h | 58 |
1 files changed, 19 insertions, 39 deletions
diff --git a/intern/moto/include/MT_Matrix3x3.h b/intern/moto/include/MT_Matrix3x3.h index 17dd5335217..eac629eb40b 100644 --- a/intern/moto/include/MT_Matrix3x3.h +++ b/intern/moto/include/MT_Matrix3x3.h @@ -55,8 +55,8 @@ class MT_Matrix3x3 { public: MT_Matrix3x3() {} - MT_Matrix3x3(const float *m) { setValue(m); } - MT_Matrix3x3(const double *m) { setValue(m); } + template <typename T> + MT_Matrix3x3(const T *m) { setValue(m); } MT_Matrix3x3(const MT_Quaternion& q) { setRotation(q); } MT_Matrix3x3(const MT_Quaternion& q, const MT_Vector3& s) { @@ -97,28 +97,18 @@ public: m_el[i][2] = v[2]; } - void setValue(const float *m) { + template <typename T> + void setValue(const T *m) { m_el[0][0] = *m++; m_el[1][0] = *m++; m_el[2][0] = *m++; m++; m_el[0][1] = *m++; m_el[1][1] = *m++; m_el[2][1] = *m++; m++; m_el[0][2] = *m++; m_el[1][2] = *m++; m_el[2][2] = *m; } - void setValue(const double *m) { - m_el[0][0] = *m++; m_el[1][0] = *m++; m_el[2][0] = *m++; m++; - m_el[0][1] = *m++; m_el[1][1] = *m++; m_el[2][1] = *m++; m++; - m_el[0][2] = *m++; m_el[1][2] = *m++; m_el[2][2] = *m; - } - - void setValue3x3(const float *m) { - m_el[0][0] = *m++; m_el[1][0] = *m++; m_el[2][0] = *m++; - m_el[0][1] = *m++; m_el[1][1] = *m++; m_el[2][1] = *m++; - m_el[0][2] = *m++; m_el[1][2] = *m++; m_el[2][2] = *m; - } - - void setValue3x3(const double *m) { - m_el[0][0] = *m++; m_el[1][0] = *m++; m_el[2][0] = *m++; - m_el[0][1] = *m++; m_el[1][1] = *m++; m_el[2][1] = *m++; - m_el[0][2] = *m++; m_el[1][2] = *m++; m_el[2][2] = *m; + template <typename T> + void setValue3x3(const T *m) { + m_el[0][0] = (MT_Scalar)*m++; m_el[1][0] = (MT_Scalar)*m++; m_el[2][0] = (MT_Scalar)*m++; + m_el[0][1] = (MT_Scalar)*m++; m_el[1][1] = (MT_Scalar)*m++; m_el[2][1] = (MT_Scalar)*m++; + m_el[0][2] = (MT_Scalar)*m++; m_el[1][2] = (MT_Scalar)*m++; m_el[2][2] = (MT_Scalar)*m; } void setValue(MT_Scalar xx, MT_Scalar xy, MT_Scalar xz, @@ -205,28 +195,18 @@ public: MT_Scalar(0.0), MT_Scalar(0.0), MT_Scalar(1.0)); } - void getValue(float *m) const { - *m++ = (float) m_el[0][0]; *m++ = (float) m_el[1][0]; *m++ = (float) m_el[2][0]; *m++ = (float) 0.0; - *m++ = (float) m_el[0][1]; *m++ = (float) m_el[1][1]; *m++ = (float) m_el[2][1]; *m++ = (float) 0.0; - *m++ = (float) m_el[0][2]; *m++ = (float) m_el[1][2]; *m++ = (float) m_el[2][2]; *m = (float) 0.0; - } - - void getValue(double *m) const { - *m++ = m_el[0][0]; *m++ = m_el[1][0]; *m++ = m_el[2][0]; *m++ = 0.0; - *m++ = m_el[0][1]; *m++ = m_el[1][1]; *m++ = m_el[2][1]; *m++ = 0.0; - *m++ = m_el[0][2]; *m++ = m_el[1][2]; *m++ = m_el[2][2]; *m = 0.0; - } - - void getValue3x3(float *m) const { - *m++ = (float) m_el[0][0]; *m++ = (float) m_el[1][0]; *m++ = (float) m_el[2][0]; - *m++ = (float) m_el[0][1]; *m++ = (float) m_el[1][1]; *m++ = (float) m_el[2][1]; - *m++ = (float) m_el[0][2]; *m++ = (float) m_el[1][2]; *m++ = (float) m_el[2][2]; + template <typename T> + void getValue(T *m) const { + *m++ = (T)m_el[0][0]; *m++ = (T)m_el[1][0]; *m++ = (T)m_el[2][0]; *m++ = (T)0; + *m++ = (T)m_el[0][1]; *m++ = (T)m_el[1][1]; *m++ = (T)m_el[2][1]; *m++ = (T)0; + *m++ = (T)m_el[0][2]; *m++ = (T)m_el[1][2]; *m++ = (T)m_el[2][2]; *m = (T)0; } - void getValue3x3(double *m) const { - *m++ = m_el[0][0]; *m++ = m_el[1][0]; *m++ = m_el[2][0]; - *m++ = m_el[0][1]; *m++ = m_el[1][1]; *m++ = m_el[2][1]; - *m++ = m_el[0][2]; *m++ = m_el[1][2]; *m++ = m_el[2][2]; + template <typename T> + void getValue3x3(T *m) const { + *m++ = (T)m_el[0][0]; *m++ = (T)m_el[1][0]; *m++ = (T)m_el[2][0]; + *m++ = (T)m_el[0][1]; *m++ = (T)m_el[1][1]; *m++ = (T)m_el[2][1]; + *m++ = (T)m_el[0][2]; *m++ = (T)m_el[1][2]; *m++ = (T)m_el[2][2]; } MT_Quaternion getRotation() const; |