diff options
author | Paul Gilbert | 2017-07-12 19:20:11 -0400 |
---|---|---|
committer | Paul Gilbert | 2017-07-12 19:20:11 -0400 |
commit | dc5645cb113bc88a5e07393b4adf251d0037acf1 (patch) | |
tree | fa293e22ed16493a2d1107f6860df3b733437f82 /engines/titanic/star_control/dmatrix.cpp | |
parent | 34969d50b87a9e55dada7d76b679453e77411109 (diff) | |
download | scummvm-rg350-dc5645cb113bc88a5e07393b4adf251d0037acf1.tar.gz scummvm-rg350-dc5645cb113bc88a5e07393b4adf251d0037acf1.tar.bz2 scummvm-rg350-dc5645cb113bc88a5e07393b4adf251d0037acf1.zip |
TITANIC: Change rows to cols in DMatrix, thanks to wjp
Diffstat (limited to 'engines/titanic/star_control/dmatrix.cpp')
-rw-r--r-- | engines/titanic/star_control/dmatrix.cpp | 186 |
1 files changed, 93 insertions, 93 deletions
diff --git a/engines/titanic/star_control/dmatrix.cpp b/engines/titanic/star_control/dmatrix.cpp index 296851b829..4f9b22d6a5 100644 --- a/engines/titanic/star_control/dmatrix.cpp +++ b/engines/titanic/star_control/dmatrix.cpp @@ -29,28 +29,28 @@ namespace Titanic { DMatrix *DMatrix::_static; DMatrix::DMatrix() : - _row1(0.0, 0.0, 0.0), _row2(0.0, 0.0, 0.0), _row3(0.0, 0.0, 0.0) { + _col1(0.0, 0.0, 0.0), _col2(0.0, 0.0, 0.0), _col3(0.0, 0.0, 0.0) { } DMatrix::DMatrix(int mode, const DVector &src) { switch (mode) { case 0: - _row1._x = 1.0; - _row2._y = 1.0; - _row3._z = 1.0; - _row4 = src; + _col1._x = 1.0; + _col2._y = 1.0; + _col3._z = 1.0; + _col4 = src; break; case 1: - _row1._x = src._x; - _row2._y = src._y; - _row3._z = src._z; + _col1._x = src._x; + _col2._y = src._y; + _col3._z = src._z; break; default: - _row1._x = 1.0; - _row2._y = 1.0; - _row3._z = 1.0; + _col1._x = 1.0; + _col2._y = 1.0; + _col3._z = 1.0; break; } } @@ -60,9 +60,9 @@ DMatrix::DMatrix(Axis axis, double amount) { } DMatrix::DMatrix(const FMatrix &src) { - _row1 = src._row1; - _row2 = src._row2; - _row3 = src._row3; + _col1 = src._row1; + _col2 = src._row2; + _col3 = src._row3; } void DMatrix::init() { @@ -81,27 +81,27 @@ void DMatrix::setRotationMatrix(Axis axis, double amount) { switch (axis) { case X_AXIS: - _row1._x = 1.0; - _row2._y = cosVal; - _row2._z = sinVal; - _row3._y = -sinVal; - _row3._z = cosVal; + _col1._x = 1.0; + _col2._y = cosVal; + _col2._z = sinVal; + _col3._y = -sinVal; + _col3._z = cosVal; break; case Y_AXIS: - _row1._x = cosVal; - _row1._z = sinVal; - _row2._y = 1.0; - _row3._x = -sinVal; - _row3._z = cosVal; + _col1._x = cosVal; + _col1._z = sinVal; + _col2._y = 1.0; + _col3._x = -sinVal; + _col3._z = cosVal; break; case Z_AXIS: - _row1._x = cosVal; - _row1._y = sinVal; - _row2._x = -sinVal; - _row2._y = cosVal; - _row3._z = 1.0; + _col1._x = cosVal; + _col1._y = sinVal; + _col2._x = -sinVal; + _col2._y = cosVal; + _col3._z = 1.0; break; default: @@ -110,7 +110,7 @@ void DMatrix::setRotationMatrix(Axis axis, double amount) { } DMatrix DMatrix::fn1() const { - double val1 = _row1._x * _row3._z * _row2._y; + double val1 = _col1._x * _col3._z * _col2._y; double val2 = 0.0; double val3 = val1; @@ -119,29 +119,29 @@ DMatrix DMatrix::fn1() const { val1 = 0.0; } - double val4 = _row3._x * _row1._y * _row2._z; + double val4 = _col3._x * _col1._y * _col2._z; if (val4 < 0.0) val2 = val2 + val4; else val1 = val1 + val4; - double val5 = _row3._y * _row1._z * _row2._x; + double val5 = _col3._y * _col1._z * _col2._x; if (val5 < 0.0) val2 = val2 + val5; else val1 = val1 + val5; - if (-(_row3._x * _row2._y * _row1._z) < 0.0) - val2 = val2 - _row3._x * _row2._y * _row1._z; + if (-(_col3._x * _col2._y * _col1._z) < 0.0) + val2 = val2 - _col3._x * _col2._y * _col1._z; else - val1 = val1 - _row3._x * _row2._y * _row1._z; - if (-(_row1._y * _row3._z * _row2._x) < 0.0) - val2 = val2 - _row1._y * _row3._z * _row2._x; + val1 = val1 - _col3._x * _col2._y * _col1._z; + if (-(_col1._y * _col3._z * _col2._x) < 0.0) + val2 = val2 - _col1._y * _col3._z * _col2._x; else - val1 = val1 - _row1._y * _row3._z * _row2._x; + val1 = val1 - _col1._y * _col3._z * _col2._x; - val3 = _row3._y * _row2._z; - double val6 = -(_row1._x * val3); + val3 = _col3._y * _col2._z; + double val6 = -(_col1._x * val3); if (val6 < 0.0) val2 = val2 + val6; else @@ -150,26 +150,26 @@ DMatrix DMatrix::fn1() const { double val7 = val2 + val1; assert(!(val7 == 0.0 || fabs(val7 / (val1 - val2)) < 1.0e-10)); - double val8 = _row3._z * _row2._y; + double val8 = _col3._z * _col2._y; double val9 = 1.0 / val7; DMatrix m; - m._row1._x = (val8 - val3) * val9; - m._row2._x = -((_row3._z * _row2._x - _row3._x * _row2._z) * val9); - m._row3._x = (_row3._y * _row2._x - _row3._x * _row2._y) * val9; - m._row1._y = -((_row1._y * _row3._z - _row3._y * _row1._z) * val9); - m._row2._y = (_row1._x * _row3._z - _row3._x * _row1._z) * val9; - m._row3._y = -((_row1._x * _row3._y - _row3._x * _row1._y) * val9); - m._row1._z = (_row1._y * _row2._z - _row2._y * _row1._z) * val9; - m._row2._z = -((_row1._x * _row2._z - _row1._z * _row2._x) * val9); - m._row3._z = (_row1._x * _row2._y - _row1._y * _row2._x) * val9; - - m._row4._x = -(m._row1._x * _row4._x + _row4._y * m._row2._x - + _row4._z * m._row3._x); - m._row4._y = -(_row4._z * m._row3._y + _row4._y * m._row2._y - + _row4._x * m._row1._y); - m._row4._z = -(_row4._z * m._row3._z + _row4._x * m._row1._z - + _row4._y * m._row2._z); + m._col1._x = (val8 - val3) * val9; + m._col2._x = -((_col3._z * _col2._x - _col3._x * _col2._z) * val9); + m._col3._x = (_col3._y * _col2._x - _col3._x * _col2._y) * val9; + m._col1._y = -((_col1._y * _col3._z - _col3._y * _col1._z) * val9); + m._col2._y = (_col1._x * _col3._z - _col3._x * _col1._z) * val9; + m._col3._y = -((_col1._x * _col3._y - _col3._x * _col1._y) * val9); + m._col1._z = (_col1._y * _col2._z - _col2._y * _col1._z) * val9; + m._col2._z = -((_col1._x * _col2._z - _col1._z * _col2._x) * val9); + m._col3._z = (_col1._x * _col2._y - _col1._y * _col2._x) * val9; + + m._col4._x = -(m._col1._x * _col4._x + _col4._y * m._col2._x + + _col4._z * m._col3._x); + m._col4._y = -(_col4._z * m._col3._y + _col4._y * m._col2._y + + _col4._x * m._col1._y); + m._col4._z = -(_col4._z * m._col3._z + _col4._x * m._col1._z + + _col4._y * m._col2._z); return m; } @@ -187,46 +187,46 @@ void DMatrix::loadTransform(const CMatrixTransform &src) { double val5 = temp1V._y * src._field0; double val6 = temp1V._z * src._field0; - _row1._x = 1.0 - (temp2V._z + temp2V._y); - _row1._y = val1 + val6; - _row1._z = val2 - val5; - _row2._x = val1 - val6; - _row2._y = 1.0 - (temp2V._z + temp2V._x); - _row2._z = val3 + val4; - _row3._x = val2 + val5; - _row3._y = val3 - val4; - _row3._z = 1.0 - (temp2V._y + temp2V._x); - _row4._x = 0; - _row4._y = 0; - _row4._z = 0; + _col1._x = 1.0 - (temp2V._z + temp2V._y); + _col1._y = val1 + val6; + _col1._z = val2 - val5; + _col2._x = val1 - val6; + _col2._y = 1.0 - (temp2V._z + temp2V._x); + _col2._z = val3 + val4; + _col3._x = val2 + val5; + _col3._y = val3 - val4; + _col3._z = 1.0 - (temp2V._y + temp2V._x); + _col4._x = 0; + _col4._y = 0; + _col4._z = 0; } DMatrix DMatrix::fn4(const DMatrix &m) { DMatrix dm; - dm._row1._x = m._row3._x * _row1._z + m._row2._x * _row1._y - + m._row1._x * _row1._x; - dm._row1._y = _row1._x * m._row1._y + m._row3._y * _row1._z - + m._row2._y * _row1._y; - dm._row1._z = _row1._x * m._row1._z + m._row3._z * _row1._z - + m._row2._z * _row1._y; - dm._row2._x = m._row1._x * _row2._x + _row2._y * m._row2._x - + _row2._z * m._row3._x; - dm._row2._y = _row2._y * m._row2._y + _row2._z * m._row3._y - + m._row1._y * _row2._x; - dm._row2._z = m._row1._z * _row2._x + _row2._y * m._row2._z - + _row2._z * m._row3._z; - dm._row3._x = m._row1._x * _row3._x + _row3._y * m._row2._x - + _row3._z * m._row3._x; - dm._row3._y = _row3._y * m._row2._y + _row3._z * m._row3._y - + m._row1._y * _row3._x; - dm._row3._z = m._row2._z * _row3._y + m._row3._z * _row3._z - + m._row1._z * _row3._x; - dm._row4._x = m._row1._x * _row4._x + _row4._y * m._row2._x - + _row4._z * m._row3._x + m._row4._x; - dm._row4._y = _row4._z * m._row3._y + _row4._y * m._row2._y - + _row4._x * m._row1._y + m._row4._y; - dm._row4._z = _row4._y * m._row2._z + _row4._x * m._row1._z - + _row4._z * m._row3._z + m._row4._z; + dm._col1._x = m._col3._x * _col1._z + m._col2._x * _col1._y + + m._col1._x * _col1._x; + dm._col1._y = _col1._x * m._col1._y + m._col3._y * _col1._z + + m._col2._y * _col1._y; + dm._col1._z = _col1._x * m._col1._z + m._col3._z * _col1._z + + m._col2._z * _col1._y; + dm._col2._x = m._col1._x * _col2._x + _col2._y * m._col2._x + + _col2._z * m._col3._x; + dm._col2._y = _col2._y * m._col2._y + _col2._z * m._col3._y + + m._col1._y * _col2._x; + dm._col2._z = m._col1._z * _col2._x + _col2._y * m._col2._z + + _col2._z * m._col3._z; + dm._col3._x = m._col1._x * _col3._x + _col3._y * m._col2._x + + _col3._z * m._col3._x; + dm._col3._y = _col3._y * m._col2._y + _col3._z * m._col3._y + + m._col1._y * _col3._x; + dm._col3._z = m._col2._z * _col3._y + m._col3._z * _col3._z + + m._col1._z * _col3._x; + dm._col4._x = m._col1._x * _col4._x + _col4._y * m._col2._x + + _col4._z * m._col3._x + m._col4._x; + dm._col4._y = _col4._z * m._col3._y + _col4._y * m._col2._y + + _col4._x * m._col1._y + m._col4._y; + dm._col4._z = _col4._y * m._col2._z + _col4._x * m._col1._z + + _col4._z * m._col3._z + m._col4._z; return dm; } |