aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/star_control/dmatrix.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2017-07-12 19:20:11 -0400
committerPaul Gilbert2017-07-12 19:20:11 -0400
commitdc5645cb113bc88a5e07393b4adf251d0037acf1 (patch)
treefa293e22ed16493a2d1107f6860df3b733437f82 /engines/titanic/star_control/dmatrix.cpp
parent34969d50b87a9e55dada7d76b679453e77411109 (diff)
downloadscummvm-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.cpp186
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;
}