aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/star_control
diff options
context:
space:
mode:
authorPaul Gilbert2017-06-03 22:05:08 -0400
committerPaul Gilbert2017-06-03 22:05:08 -0400
commit44fce15f50906b20b73adcd4bf9225172617c1f4 (patch)
tree7be2805c96d03a532425d6ddf87da2613edec146 /engines/titanic/star_control
parent8c3132843314afc570320537f63597cc09bd6c58 (diff)
downloadscummvm-rg350-44fce15f50906b20b73adcd4bf9225172617c1f4.tar.gz
scummvm-rg350-44fce15f50906b20b73adcd4bf9225172617c1f4.tar.bz2
scummvm-rg350-44fce15f50906b20b73adcd4bf9225172617c1f4.zip
TITANIC: Fix some vector calculations in marker lock-on code
Diffstat (limited to 'engines/titanic/star_control')
-rw-r--r--engines/titanic/star_control/dvector.cpp13
-rw-r--r--engines/titanic/star_control/star_control_sub21.cpp2
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();