diff options
author | Paul Gilbert | 2017-06-03 22:05:08 -0400 |
---|---|---|
committer | Paul Gilbert | 2017-06-03 22:05:08 -0400 |
commit | 44fce15f50906b20b73adcd4bf9225172617c1f4 (patch) | |
tree | 7be2805c96d03a532425d6ddf87da2613edec146 | |
parent | 8c3132843314afc570320537f63597cc09bd6c58 (diff) | |
download | scummvm-rg350-44fce15f50906b20b73adcd4bf9225172617c1f4.tar.gz scummvm-rg350-44fce15f50906b20b73adcd4bf9225172617c1f4.tar.bz2 scummvm-rg350-44fce15f50906b20b73adcd4bf9225172617c1f4.zip |
TITANIC: Fix some vector calculations in marker lock-on code
-rw-r--r-- | engines/titanic/star_control/dvector.cpp | 13 | ||||
-rw-r--r-- | engines/titanic/star_control/star_control_sub21.cpp | 2 |
2 files changed, 7 insertions, 8 deletions
diff --git a/engines/titanic/star_control/dvector.cpp b/engines/titanic/star_control/dvector.cpp index 08a7e2d4fc..b4a9ede3b2 100644 --- a/engines/titanic/star_control/dvector.cpp +++ b/engines/titanic/star_control/dvector.cpp @@ -60,18 +60,18 @@ DVector DVector::fn3() const { DVector vector = *this; DVector dest; dest._x = vector.normalize(); - dest._z = acos(vector._y); + dest._y = acos(vector._y); if (ABS(vector._z) < 0.00001) { if (vector._x < 0.0) { - dest._y = 2 * M_PI - (M_PI / 2.0); + dest._z = 2 * M_PI - (M_PI / 2.0); } else { - dest._y = M_PI / 2.0; + dest._z = M_PI / 2.0; } } else { - dest._y = atan(vector._x / vector._z); + dest._z = atan(vector._x / vector._z); if (vector._x < 0.0) - dest._y += 2 * M_PI; + dest._z += 2 * M_PI; } return dest; @@ -80,8 +80,8 @@ DVector DVector::fn3() const { DMatrix DVector::fn4(const DVector &v) { const double FACTOR = 180.0 / M_PI; DMatrix matrix1, matrix2, matrix3, matrix4; - DVector vector1 = fn3(); + DVector vector1 = fn3(); matrix1.setRotationMatrix(X_AXIS, vector1._y * FACTOR); matrix2.setRotationMatrix(Y_AXIS, -(vector1._z * FACTOR)); matrix3 = matrix1.fn4(matrix2); @@ -91,7 +91,6 @@ DMatrix DVector::fn4(const DVector &v) { matrix1.setRotationMatrix(X_AXIS, vector1._y * FACTOR); matrix2.setRotationMatrix(Y_AXIS, -(vector1._z * FACTOR)); matrix3 = matrix1.fn4(matrix2); - matrix4 = matrix1.fn1(); return matrix4.fn4(matrix3); } diff --git a/engines/titanic/star_control/star_control_sub21.cpp b/engines/titanic/star_control/star_control_sub21.cpp index 2dc90d503f..bf5af80860 100644 --- a/engines/titanic/star_control/star_control_sub21.cpp +++ b/engines/titanic/star_control/star_control_sub21.cpp @@ -48,7 +48,7 @@ void CStarControlSub21::proc10(const FVector &v1, const FVector &v2, const FVect DVector vector1 = v1; DVector vector2 = v2; DMatrix matrix1 = vector2.fn4(vector1); - FMatrix matrix2 = matrix1.fn4(m); + DMatrix matrix2 = matrix1.fn4(m); _sub24.proc3(m, matrix2); incLockCount(); |