[Scummvm-git-logs] scummvm master -> ad15747c6da2298282d8d08e6003b8be85889e43
criezy
criezy at scummvm.org
Wed Jul 4 00:08:56 CEST 2018
This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ccd46b7db9 FULLPIPE: Use degree conversion common math funcs
fb3dcb9ee0 TITANIC: Use degree conversion common math funcs
a01babbd38 MOHAWK: MYST: Use degree conversion common math funcs
8e1f712327 WINTERMUTE: Use degree conversion common math funcs
e00881804f GFX: Use degree conversion common math funcs
503f0c8f0b AVALANCHE: Use degree conversion common math funcs
ad15747c6d ZVISION: Use degree conversion common math funcs
Commit: ccd46b7db90c5ea10394d9143111868ff3d5c5df
https://github.com/scummvm/scummvm/commit/ccd46b7db90c5ea10394d9143111868ff3d5c5df
Author: David Fioramonti (dafioram at gmail.com)
Date: 2018-07-03T23:08:48+01:00
Commit Message:
FULLPIPE: Use degree conversion common math funcs
Swapped out the #define ANGLE(X) function that did degrees
to radians.
I have made everything doubles in the angle calculation.
Changed paths:
engines/fullpipe/scenes/scene18and19.cpp
diff --git a/engines/fullpipe/scenes/scene18and19.cpp b/engines/fullpipe/scenes/scene18and19.cpp
index 3b6ff07..93a2a7f 100644
--- a/engines/fullpipe/scenes/scene18and19.cpp
+++ b/engines/fullpipe/scenes/scene18and19.cpp
@@ -33,6 +33,7 @@
#include "fullpipe/interaction.h"
#include "fullpipe/behavior.h"
+#include "common/math.h"
namespace Fullpipe {
@@ -49,8 +50,6 @@ struct Swinger {
};
-#define ANGLE(x) ((x) * M_PI / 180)
-
void scene18_preload() {
g_fp->_scene3 = 0;
@@ -149,7 +148,7 @@ void scene18_setupSwingers(StaticANIObject *ani, Scene *sc) {
for (int i = 0; i < 8; i++) {
swinger = new Swinger;
- swinger->angle = (double)i * ANGLE(45);
+ swinger->angle = (double)i * Common::deg2rad<double>(45.0);
swinger->sx = g_vars->scene18_wheelCenterX - (int)(cos(swinger->angle) * -575.0);
swinger->sy = g_vars->scene18_wheelCenterY - (int)(sin(swinger->angle) * -575.0) + 87;
swinger->ix = swinger->sx;
@@ -555,11 +554,11 @@ void sceneHandler18and19_drawRiders() {
double oldangle = swinger->angle;
- swinger->angle += ANGLE(1);
+ swinger->angle += Common::deg2rad<double>(1.0);
- if (swinger->angle > ANGLE(360)) {
- swinger->angle -= ANGLE(360);
- oldangle -= ANGLE(360);
+ if (swinger->angle > Common::deg2rad<double>(360.0)) {
+ swinger->angle -= Common::deg2rad<double>(360.0);
+ oldangle -= Common::deg2rad<double>(360.0);
}
int ix = g_vars->scene18_wheelCenterX - (int)(cos(swinger->angle) * -575.0);
@@ -568,7 +567,7 @@ void sceneHandler18and19_drawRiders() {
if (!g_vars->scene18_rotationCounter) {
ix = swinger->sx;
iy = swinger->sy;
- swinger->angle = (double)i * ANGLE(45);
+ swinger->angle = (double)i * Common::deg2rad<double>(45.0);
}
if (swinger->ani->_movement)
@@ -600,27 +599,27 @@ void sceneHandler18and19_drawRiders() {
}
if (g_vars->scene18_wheelIsTurning) {
- if ((swinger->sflags & 2) && swinger->angle >= ANGLE(160) && oldangle < ANGLE(160)) {
+ if ((swinger->sflags & 2) && swinger->angle >= Common::deg2rad<double>(160.0) && oldangle < Common::deg2rad<double>(160.0)) {
swinger->sflags = 8;
swinger->ani->changeStatics2(ST_KSL_BOY);
swinger->ani->startAnim(MV_KSL_JUMPBOY, 0, -1);
g_vars->scene18_kidWheelPos = i;
- } else if ((swinger->sflags & 4) && swinger->angle >= ANGLE(162) && oldangle < ANGLE(162)) {
+ } else if ((swinger->sflags & 4) && swinger->angle >= Common::deg2rad<double>(162.0) && oldangle < Common::deg2rad<double>(162.0)) {
swinger->sflags = 16;
swinger->ani->changeStatics2(ST_KSL_GIRL);
swinger->ani->startAnim(MV_KSL_JUMPGIRL, 0, -1);
g_vars->scene18_kidWheelPos = i;
} else if (g_vars->scene18_kidIsOnWheel) {
- if (g_vars->scene18_boyIsOnWheel > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(185) && oldangle < ANGLE(185)) {
+ if (g_vars->scene18_boyIsOnWheel > 0 && (swinger->sflags & 1) && swinger->angle >= Common::deg2rad<double>(185.0) && oldangle < Common::deg2rad<double>(185.0)) {
g_vars->scene18_kidWheelPosTo = i;
sceneHandler18and19_boyJumpTo();
}
- } else if (g_vars->scene18_girlIsOnWheel > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(187) && oldangle < ANGLE(187)) {
+ } else if (g_vars->scene18_girlIsOnWheel > 0 && (swinger->sflags & 1) && swinger->angle >= Common::deg2rad<double>(187.0) && oldangle < Common::deg2rad<double>(187.0)) {
g_vars->scene18_kidWheelPosTo = i;
sceneHandler18and19_girlJumpTo();
}
- if (swinger->angle >= ANGLE(200) && oldangle < ANGLE(200)) {
+ if (swinger->angle >= Common::deg2rad<double>(200.0) && oldangle < Common::deg2rad<double>(200.0)) {
if (g_vars->scene18_boyJumpedOff)
g_vars->scene18_boyIsOnWheel++;
@@ -628,7 +627,7 @@ void sceneHandler18and19_drawRiders() {
}
}
- if (g_vars->scene18_manIsReady && (swinger->sflags & 1) && swinger->angle >= ANGLE(83) && oldangle < ANGLE(83)) {
+ if (g_vars->scene18_manIsReady && (swinger->sflags & 1) && swinger->angle >= Common::deg2rad<double>(83.0) && oldangle < Common::deg2rad<double>(83.0)) {
g_vars->scene18_manWheelPosTo = i;
sceneHandler18and19_manStandArmchair();
}
@@ -637,18 +636,18 @@ void sceneHandler18and19_drawRiders() {
continue;
if ((int)i == g_vars->scene18_manWheelPosTo) {
- if (swinger->angle >= ANGLE(170) && oldangle < ANGLE(170)) {
+ if (swinger->angle >= Common::deg2rad<double>(170.0) && oldangle < Common::deg2rad<double>(170.0)) {
g_fp->_gameLoader->preloadScene(SC_18, TrubaRight);
- } else if (swinger->angle >= ANGLE(25) && oldangle < ANGLE(25)) {
+ } else if (swinger->angle >= Common::deg2rad<double>(25.0) && oldangle < Common::deg2rad<double>(25.0)) {
g_fp->_gameLoader->preloadScene(SC_19, TrubaRight);
- } else if (swinger->angle >= ANGLE(270) && oldangle < ANGLE(270)) {
+ } else if (swinger->angle >= Common::deg2rad<double>(270.0) && oldangle < Common::deg2rad<double>(270.0)) {
g_fp->_sceneRect.translate(1200, 0);
}
}
if (g_vars->scene18_jumpDistance > 0) {
if (swinger->sflags & 0x20) {
- double newa = (double)g_vars->scene18_jumpAngle * ANGLE(1);
+ double newa = (double)g_vars->scene18_jumpAngle * Common::deg2rad<double>(1.0);
if (newa <= swinger->angle && oldangle < newa) {
swinger->ani->changeStatics2(ST_KSL_MAN);
Commit: fb3dcb9ee0ff3b74e8c0a60cdc2c52821d7c879e
https://github.com/scummvm/scummvm/commit/fb3dcb9ee0ff3b74e8c0a60cdc2c52821d7c879e
Author: David Fioramonti (dafioram at gmail.com)
Date: 2018-07-03T23:08:48+01:00
Commit Message:
TITANIC: Use degree conversion common math funcs
I tested the star puzzle and it is still good.
Changed paths:
engines/titanic/star_control/fpose.cpp
engines/titanic/star_control/fvector.cpp
engines/titanic/star_control/fvector.h
engines/titanic/star_control/star_closeup.cpp
engines/titanic/star_control/star_closeup.h
engines/titanic/star_control/star_points1.cpp
engines/titanic/star_control/star_points2.cpp
engines/titanic/star_control/viewport.cpp
diff --git a/engines/titanic/star_control/fpose.cpp b/engines/titanic/star_control/fpose.cpp
index f3ba1b1..5e98344 100644
--- a/engines/titanic/star_control/fpose.cpp
+++ b/engines/titanic/star_control/fpose.cpp
@@ -24,6 +24,8 @@
#include "titanic/star_control/matrix_transform.h"
#include "titanic/star_control/matrix_inv.h"
+#include "common/math.h"
+
namespace Titanic {
// Non-member functions
@@ -91,9 +93,8 @@ void FPose::identity() {
// Source: https://en.wikipedia.org/wiki/Rotation_matrix
void FPose::setRotationMatrix(Axis axis, float amount) {
- const float ROTATION = (float)(2 * M_PI / 360.0);
- float sinVal = sin(amount * ROTATION);
- float cosVal = cos(amount * ROTATION);
+ float sinVal = sin(Common::deg2rad<float>(amount));
+ float cosVal = cos(Common::deg2rad<float>(amount));
switch (axis) {
case X_AXIS:
diff --git a/engines/titanic/star_control/fvector.cpp b/engines/titanic/star_control/fvector.cpp
index 46094db..6ebd297 100644
--- a/engines/titanic/star_control/fvector.cpp
+++ b/engines/titanic/star_control/fvector.cpp
@@ -22,7 +22,8 @@
#include "titanic/star_control/fvector.h"
#include "titanic/star_control/fpose.h"
-//#include "common/textconsole.h"
+
+#include "common/math.h"
namespace Titanic {
@@ -44,8 +45,8 @@ FVector FVector::crossProduct(const FVector &src) const {
}
void FVector::rotVectAxisY(float angleDeg) {
- float sinVal = sin(angleDeg * Deg2Rad);
- float cosVal = cos(angleDeg * Deg2Rad);
+ float sinVal = sin(Common::deg2rad<double>(angleDeg));
+ float cosVal = cos(Common::deg2rad<double>(angleDeg));
float x = cosVal * _x - sinVal * _z;
float z = cosVal * _z + sinVal * _x;
@@ -115,14 +116,14 @@ FPose FVector::getFrameTransform(const FVector &v) {
FPose matrix1, matrix2, matrix3, matrix4;
FVector vector1 = getAnglesAsVect();
- matrix1.setRotationMatrix(X_AXIS, vector1._y * Rad2Deg);
- matrix2.setRotationMatrix(Y_AXIS, vector1._z * Rad2Deg);
+ matrix1.setRotationMatrix(X_AXIS, Common::rad2deg<double>(vector1._y));
+ matrix2.setRotationMatrix(Y_AXIS, Common::rad2deg<double>(vector1._z));
fposeProd(matrix1, matrix2, matrix3);
matrix4 = matrix3.inverseTransform();
vector1 = v.getAnglesAsVect();
- matrix1.setRotationMatrix(X_AXIS, vector1._y * Rad2Deg);
- matrix2.setRotationMatrix(Y_AXIS, vector1._z * Rad2Deg);
+ matrix1.setRotationMatrix(X_AXIS, Common::rad2deg<double>(vector1._y));
+ matrix2.setRotationMatrix(Y_AXIS, Common::rad2deg<double>(vector1._z));
fposeProd(matrix1, matrix2, matrix3);
fposeProd(matrix4, matrix3, matrix1);
@@ -132,8 +133,8 @@ FPose FVector::getFrameTransform(const FVector &v) {
FPose FVector::formRotXY() const {
FVector v1 = getAnglesAsVect();
FPose m1, m2;
- m1.setRotationMatrix(X_AXIS, v1._y * Rad2Deg);
- m2.setRotationMatrix(Y_AXIS, v1._z * Rad2Deg);
+ m1.setRotationMatrix(X_AXIS, Common::rad2deg<double>(v1._y));
+ m2.setRotationMatrix(Y_AXIS, Common::rad2deg<double>(v1._z));
FPose m3;
fposeProd(m1, m2, m3);
return m3;
diff --git a/engines/titanic/star_control/fvector.h b/engines/titanic/star_control/fvector.h
index 5ec3aa0..1e25c9a 100644
--- a/engines/titanic/star_control/fvector.h
+++ b/engines/titanic/star_control/fvector.h
@@ -27,8 +27,6 @@
namespace Titanic {
-const double Rad2Deg = 180.0 / M_PI;
-const double Deg2Rad = 1.0 / Rad2Deg;
enum Axis { X_AXIS, Y_AXIS, Z_AXIS };
class FPose;
diff --git a/engines/titanic/star_control/star_closeup.cpp b/engines/titanic/star_control/star_closeup.cpp
index 3bc3623..04b4c86 100644
--- a/engines/titanic/star_control/star_closeup.cpp
+++ b/engines/titanic/star_control/star_closeup.cpp
@@ -26,6 +26,8 @@
#include "titanic/star_control/surface_area.h"
#include "titanic/titanic.h"
+#include "common/math.h"
+
namespace Titanic {
#define MKTAG_BE(a3,a2,a1,a0) ((uint32)((a3) | ((a2) << 8) | ((a1) << 16) | ((a0) << 24)))
@@ -65,7 +67,6 @@ bool CStarCloseup::setup() {
}
bool CStarCloseup::setup2(int val1, int val2) {
- const float FACTOR = 2 * M_PI / 360.0;
const int VALUES1[] = { 0x800, 0xC00, 0x1000, 0x1400, 0x1800 };
const int VALUES2[] = {
0xF95BCD, 0xA505A0, 0xFFAD43, 0x98F4EB, 0xF3EFA5, 0,
@@ -83,7 +84,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0x40;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 7.0;
+ e->_field10 = Common::deg2rad<double>(7.0);
e->_field14 = 0.0084687499;
++e;
@@ -93,7 +94,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 3.0;
+ e->_field10 = Common::deg2rad<double>(3.0);
e->_field14 = 0.021011719;
++e;
@@ -113,7 +114,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 2.0;
+ e->_field10 = Common::deg2rad<double>(2.0);
e->_field14 = 0.01178125;
++e;
@@ -123,7 +124,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 1.0;
+ e->_field10 = Common::deg2rad<double>(1.0);
e->_field14 = 0.24791406;
++e;
@@ -133,7 +134,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0xe6;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 3.0;
+ e->_field10 = Common::deg2rad<double>(3.0);
e->_field14 = 0.20832032;
++e;
@@ -143,7 +144,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0x28;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 1.0;
+ e->_field10 = Common::deg2rad<double>(1.0);
e->_field14 = 0.088164061;
++e;
@@ -153,7 +154,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0xf0;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 2.0;
+ e->_field10 = Common::deg2rad<double>(2.0);
e->_field14 = 0.084375001;
++e;
@@ -163,7 +164,7 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel3 = 0x20;
e->_field8 = g_vm->getRandomNumber(3) + 3;
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * 17.0;
+ e->_field10 = Common::deg2rad<double>(17.0);
e->_field14 = 1 / 256.0;
} else {
for (int ctr = 0; ctr < 5; ++ctr) {
@@ -174,9 +175,8 @@ bool CStarCloseup::setup2(int val1, int val2) {
e->_pixel2 = (val >> 8) & 0xff;
e->_pixel3 = (val >> 16) & 0xff;
e->_field8 = g_vm->getRandomNumber(3) + 3;
-
e->_fieldC = g_vm->getRandomNumber(255);
- e->_field10 = FACTOR * (float)g_vm->getRandomNumber(15);
+ e->_field10 = Common::deg2rad<double>((double)g_vm->getRandomNumber(15));
e->_field14 = ((float)g_vm->getRandomNumber(0xfffffffe)
* 50.0 / 65536.0) / 256.0;
}
@@ -492,7 +492,6 @@ bool CStarCloseup::setupEntry(int width, int height, int index, float val) {
SubEntry &entry = _array[index];
entry.clear();
- const float FACTOR = 2.0 * M_PI / 360.0;
int d1Count, d2Count, size3, height1;
int ctr, ctr2, idx, incr;
float vx, vy, yVal, degrees, cosVal, sinVal, angle;
@@ -511,12 +510,12 @@ bool CStarCloseup::setupEntry(int width, int height, int index, float val) {
for (ctr = height - 2, idx = 1, yVal = vy; ctr > 0; --ctr, yVal += vy) {
degrees = 0.0;
- cosVal = cos(yVal * FACTOR);
- sinVal = sin(yVal * FACTOR);
+ cosVal = cos(Common::deg2rad<float>(yVal));
+ sinVal = sin(Common::deg2rad<float>(yVal));
if (width > 0) {
for (int xCtr = 0; xCtr < width; ++xCtr, ++idx, degrees += vx) {
- angle = degrees * FACTOR;
+ angle = Common::deg2rad<float>(degrees);
FVector &tempV = entry._data2[idx];
tempV._x = sin(angle) * sinVal * val;
diff --git a/engines/titanic/star_control/star_closeup.h b/engines/titanic/star_control/star_closeup.h
index fae3731..04962e6 100644
--- a/engines/titanic/star_control/star_closeup.h
+++ b/engines/titanic/star_control/star_closeup.h
@@ -77,6 +77,7 @@ class CStarCloseup {
/**
* Maintains a pre-calculated table of sine values
+ * TODO: May be able to reuse common/sinetables.h
*/
struct SineTable {
private:
diff --git a/engines/titanic/star_control/star_points1.cpp b/engines/titanic/star_control/star_points1.cpp
index 0328743..7aabe21 100644
--- a/engines/titanic/star_control/star_points1.cpp
+++ b/engines/titanic/star_control/star_points1.cpp
@@ -26,10 +26,11 @@
#include "titanic/support/files_manager.h"
#include "titanic/titanic.h"
+#include "common/math.h"
+
namespace Titanic {
#define ARRAY_COUNT 876
-const double FACTOR = 2 * M_PI / 360.0;
CStarPoints1::CStarPoints1() {
}
@@ -48,8 +49,8 @@ bool CStarPoints1::initialize() {
double v2 = stream->readSint32LE();
entry._flag = stream->readUint32LE() != 0;
- v1 *= 0.015 * FACTOR;
- v2 *= 0.0099999998 * FACTOR;
+ v1 *= Common::deg2rad<double>(0.015);
+ v2 *= Common::deg2rad<double>(0.0099999998);
entry._x = cos(v2) * 3000000.0 * cos(v1);
entry._y = sin(v1) * 3000000.0 * cos(v2);
diff --git a/engines/titanic/star_control/star_points2.cpp b/engines/titanic/star_control/star_points2.cpp
index aa5444f..6e91a6e 100644
--- a/engines/titanic/star_control/star_points2.cpp
+++ b/engines/titanic/star_control/star_points2.cpp
@@ -26,10 +26,11 @@
#include "titanic/support/files_manager.h"
#include "titanic/titanic.h"
+#include "common/math.h"
+
namespace Titanic {
#define ARRAY_COUNT 80
-const double FACTOR = 2 * M_PI / 360.0;
bool CStarPoints2::initialize() {
// Get a reference to the starfield points resource
@@ -51,8 +52,8 @@ bool CStarPoints2::initialize() {
for (int fctr = 0; fctr < 2; ++fctr) {
v1 = stream->readSint32LE();
v2 = stream->readSint32LE();
- v1 *= 0.015 * FACTOR;
- v2 *= FACTOR / 100.0;
+ v1 *= Common::deg2rad<double>(0.015);
+ v2 *= Common::deg2rad<double>(0.01);
vectors[fctr]->_x = cos(v1) * 3000000.0 * cos(v2);
vectors[fctr]->_y = sin(v1) * 3000000.0 * cos(v2);
diff --git a/engines/titanic/star_control/viewport.cpp b/engines/titanic/star_control/viewport.cpp
index d66ff42..b6482da 100644
--- a/engines/titanic/star_control/viewport.cpp
+++ b/engines/titanic/star_control/viewport.cpp
@@ -26,6 +26,8 @@
#include "titanic/support/simple_file.h"
#include "titanic/titanic.h"
+#include "common/math.h"
+
namespace Titanic {
CViewport::CViewport() {
@@ -299,8 +301,8 @@ void CViewport::reset() {
_center = FPoint((double)_width * 0.5, (double)_height * 0.5);
_centerVector._x = MIN(_center._x, _center._y);
- _centerVector._y = tan(_centerYAngleDegrees * Deg2Rad);
- _centerVector._z = tan(_centerZAngleDegrees * Deg2Rad);
+ _centerVector._y = tan(Common::deg2rad<double>(_centerYAngleDegrees));
+ _centerVector._z = tan(Common::deg2rad<double>(_centerZAngleDegrees));
}
const FMatrix &CViewport::getOrientation() const {
Commit: a01babbd38174a13764dbddb09c1ebaeba185d7b
https://github.com/scummvm/scummvm/commit/a01babbd38174a13764dbddb09c1ebaeba185d7b
Author: David Fioramonti (dafioram at gmail.com)
Date: 2018-07-03T23:08:48+01:00
Commit Message:
MOHAWK: MYST: Use degree conversion common math funcs
Changed paths:
engines/mohawk/myst_stacks/myst.cpp
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
index 0cb0f05..647676e 100644
--- a/engines/mohawk/myst_stacks/myst.cpp
+++ b/engines/mohawk/myst_stacks/myst.cpp
@@ -31,6 +31,7 @@
#include "mohawk/myst_stacks/myst.h"
#include "common/events.h"
+#include "common/math.h"
#include "common/system.h"
#include "common/textconsole.h"
@@ -3251,9 +3252,9 @@ Common::Point Myst::towerRotationMapComputeCoords(uint16 angle) {
Common::Point end;
// Polar to rect coords
- double radians = angle * M_PI / 180.0;
- end.x = (int16)(_towerRotationCenter.x + cos(radians) * 310.0);
- end.y = (int16)(_towerRotationCenter.y + sin(radians) * 310.0);
+ float radians = Common::deg2rad<uint16,float>(angle);
+ end.x = (int16)(_towerRotationCenter.x + cos(radians) * 310.0f);
+ end.y = (int16)(_towerRotationCenter.y + sin(radians) * 310.0f);
return end;
}
Commit: 8e1f71232737ca5cb3b57f664e3e4e36137f9181
https://github.com/scummvm/scummvm/commit/8e1f71232737ca5cb3b57f664e3e4e36137f9181
Author: David Fioramonti (dafioram at gmail.com)
Date: 2018-07-03T23:08:48+01:00
Commit Message:
WINTERMUTE: Use degree conversion common math funcs
Changed paths:
engines/wintermute/base/scriptables/script_ext_math.cpp
diff --git a/engines/wintermute/base/scriptables/script_ext_math.cpp b/engines/wintermute/base/scriptables/script_ext_math.cpp
index 4d770d4..fd45594 100644
--- a/engines/wintermute/base/scriptables/script_ext_math.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_math.cpp
@@ -120,7 +120,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Cos") == 0) {
stack->correctParams(1);
- stack->pushFloat(cos(degreeToRadian(stack->pop()->getFloat())));
+ stack->pushFloat(cos(Common::deg2rad<double>(stack->pop()->getFloat())));
return STATUS_OK;
}
@@ -129,7 +129,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Cosh") == 0) {
stack->correctParams(1);
- stack->pushFloat(cosh(degreeToRadian(stack->pop()->getFloat())));
+ stack->pushFloat(cosh(Common::deg2rad<double>(stack->pop()->getFloat())));
return STATUS_OK;
}
@@ -186,7 +186,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Sin") == 0) {
stack->correctParams(1);
- stack->pushFloat(sin(degreeToRadian(stack->pop()->getFloat())));
+ stack->pushFloat(sin(Common::deg2rad<double>(stack->pop()->getFloat())));
return STATUS_OK;
}
@@ -195,7 +195,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Sinh") == 0) {
stack->correctParams(1);
- stack->pushFloat(sinh(degreeToRadian(stack->pop()->getFloat())));
+ stack->pushFloat(sinh(Common::deg2rad<double>(stack->pop()->getFloat())));
return STATUS_OK;
}
@@ -204,7 +204,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Tan") == 0) {
stack->correctParams(1);
- stack->pushFloat(tan(degreeToRadian(stack->pop()->getFloat())));
+ stack->pushFloat(tan(Common::deg2rad<double>(stack->pop()->getFloat())));
return STATUS_OK;
}
@@ -213,7 +213,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "Tanh") == 0) {
stack->correctParams(1);
- stack->pushFloat(tanh(degreeToRadian(stack->pop()->getFloat())));
+ stack->pushFloat(tanh(Common::deg2rad<double>(stack->pop()->getFloat())));
return STATUS_OK;
}
@@ -231,7 +231,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "DegToRad") == 0) {
stack->correctParams(1);
- stack->pushFloat(degreeToRadian(stack->pop()->getFloat()));
+ stack->pushFloat(Common::deg2rad<double>(stack->pop()->getFloat()));
return STATUS_OK;
}
@@ -240,7 +240,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
//////////////////////////////////////////////////////////////////////////
else if (strcmp(name, "RadToDeg") == 0) {
stack->correctParams(1);
- stack->pushFloat(radianToDegree(stack->pop()->getFloat()));
+ stack->pushFloat(Common::rad2deg<double>(stack->pop()->getFloat()));
return STATUS_OK;
} else {
return STATUS_FAILED;
@@ -273,18 +273,6 @@ ScValue *SXMath::scGetProperty(const Common::String &name) {
//////////////////////////////////////////////////////////////////////////
-double SXMath::degreeToRadian(double value) {
- return value * (M_PI / 180.0f);
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-double SXMath::radianToDegree(double value) {
- return value * (180.0f / M_PI);
-}
-
-
-//////////////////////////////////////////////////////////////////////////
bool SXMath::persist(BasePersistenceManager *persistMgr) {
BaseScriptable::persist(persistMgr);
Commit: e00881804f4e3be2f332b6fdd67885f8af124e6d
https://github.com/scummvm/scummvm/commit/e00881804f4e3be2f332b6fdd67885f8af124e6d
Author: David Fioramonti (dafioram at gmail.com)
Date: 2018-07-03T23:08:48+01:00
Commit Message:
GFX: Use degree conversion common math funcs
Changed paths:
graphics/transform_tools.cpp
graphics/transparent_surface.cpp
diff --git a/graphics/transform_tools.cpp b/graphics/transform_tools.cpp
index 6e87b63..a0617ff 100644
--- a/graphics/transform_tools.cpp
+++ b/graphics/transform_tools.cpp
@@ -22,12 +22,13 @@
#include "graphics/transform_tools.h"
+#include "common/math.h"
#include <math.h>
namespace Graphics {
FloatPoint TransformTools::transformPoint(FloatPoint point, const float rotate, const Common::Point &zoom, const bool mirrorX, const bool mirrorY) {
- float rotateRad = rotate * M_PI / 180.0f;
+ float rotateRad = Common::deg2rad<float>(rotate);
float x = point.x;
float y = point.y;
x = (x * zoom.x) / kDefaultZoomX;
diff --git a/graphics/transparent_surface.cpp b/graphics/transparent_surface.cpp
index 10f69b5..2a6fa7b 100644
--- a/graphics/transparent_surface.cpp
+++ b/graphics/transparent_surface.cpp
@@ -796,8 +796,9 @@ TransparentSurface *TransparentSurface::rotoscaleT(const TransformStruct &transf
}
uint32 invAngle = 360 - (transform._angle % 360);
- float invCos = cos(invAngle * M_PI / 180.0);
- float invSin = sin(invAngle * M_PI / 180.0);
+ float invAngleRad = Common::deg2rad<uint32,float>(invAngle);
+ float invCos = cos(invAngleRad);
+ float invSin = sin(invAngleRad);
int icosx = (int)(invCos * (65536.0f * kDefaultZoomX / transform._zoom.x));
int isinx = (int)(invSin * (65536.0f * kDefaultZoomX / transform._zoom.x));
Commit: 503f0c8f0bc1dc8311e598c6556ee556f32b6c44
https://github.com/scummvm/scummvm/commit/503f0c8f0bc1dc8311e598c6556ee556f32b6c44
Author: David Fioramonti (dafioram at gmail.com)
Date: 2018-07-03T23:08:48+01:00
Commit Message:
AVALANCHE: Use degree conversion common math funcs
Noted an atan maybe should be an atan2.
For the atan call I casted the numerator and denominator
separately instead of after they are divided.
Changed paths:
engines/avalanche/avalot.cpp
engines/avalanche/graphics.cpp
diff --git a/engines/avalanche/avalot.cpp b/engines/avalanche/avalot.cpp
index 85cdd9a..e21999b 100644
--- a/engines/avalanche/avalot.cpp
+++ b/engines/avalanche/avalot.cpp
@@ -29,6 +29,7 @@
#include "avalanche/avalanche.h"
+#include "common/math.h"
#include "common/random.h"
#include "common/system.h"
#include "common/config-manager.h"
@@ -1300,7 +1301,7 @@ uint16 AvalancheEngine::bearing(byte whichPed) {
int16 deltaX = avvy->_x - curPed->_x;
int16 deltaY = avvy->_y - curPed->_y;
- uint16 result = (uint16)(atan((float)(deltaY / deltaX)) * 180 / M_PI);
+ uint16 result = Common::rad2deg<float,uint16>(atan((float)deltaY / (float)deltaX)); // TODO: Would atan2 be preferable?
if (avvy->_x < curPed->_x) {
return result + 90;
} else {
diff --git a/engines/avalanche/graphics.cpp b/engines/avalanche/graphics.cpp
index 6ce6ef2..0025353 100644
--- a/engines/avalanche/graphics.cpp
+++ b/engines/avalanche/graphics.cpp
@@ -28,6 +28,7 @@
#include "avalanche/avalanche.h"
#include "avalanche/graphics.h"
+#include "common/math.h"
#include "common/system.h"
#include "engines/util.h"
#include "graphics/palette.h"
@@ -199,7 +200,6 @@ void GraphicManager::drawToolbar() {
Common::Point GraphicManager::drawArc(Graphics::Surface &surface, int16 x, int16 y, int16 stAngle, int16 endAngle, uint16 radius, Color color) {
Common::Point endPoint;
- const float convfac = (float)M_PI / 180.0f;
int32 xRadius = radius;
int32 yRadius = radius * kScreenWidth / (8 * kScreenHeight); // Just don't ask why...
@@ -243,7 +243,7 @@ Common::Point GraphicManager::drawArc(Graphics::Surface &surface, int16 x, int16
uint16 deltaEnd = 91;
// Set the end point.
- float tempTerm = endAngle * convfac;
+ float tempTerm = Common::deg2rad<float>(endAngle);
endPoint.x = (int16)floor(xRadius * cos(tempTerm) + 0.5) + x;
endPoint.y = (int16)floor(yRadius * sin(tempTerm + M_PI) + 0.5) + y;
@@ -254,7 +254,7 @@ Common::Point GraphicManager::drawArc(Graphics::Surface &surface, int16 x, int16
int16 xTemp = xNext;
int16 yTemp = yNext;
// This is used by both sin and cos.
- tempTerm = (j + delta) * convfac;
+ tempTerm = Common::deg2rad<float>(j + delta);
xNext = (int16)floor(xRadius * cos(tempTerm) + 0.5);
yNext = (int16)floor(yRadius * sin(tempTerm + M_PI) + 0.5);
Commit: ad15747c6da2298282d8d08e6003b8be85889e43
https://github.com/scummvm/scummvm/commit/ad15747c6da2298282d8d08e6003b8be85889e43
Author: David Fioramonti (dafioram at gmail.com)
Date: 2018-07-03T23:08:48+01:00
Commit Message:
ZVISION: Use degree conversion common math funcs
Changed paths:
engines/zvision/graphics/render_table.cpp
diff --git a/engines/zvision/graphics/render_table.cpp b/engines/zvision/graphics/render_table.cpp
index df73247..815a1b0 100644
--- a/engines/zvision/graphics/render_table.cpp
+++ b/engines/zvision/graphics/render_table.cpp
@@ -20,9 +20,11 @@
*
*/
-#include "common/scummsys.h"
#include "zvision/graphics/render_table.h"
+
+#include "common/math.h"
#include "common/rect.h"
+#include "common/scummsys.h"
#include "graphics/colormasks.h"
namespace ZVision {
@@ -144,7 +146,7 @@ void RenderTable::generatePanoramaLookupTable() {
float halfWidth = (float)_numColumns / 2.0f;
float halfHeight = (float)_numRows / 2.0f;
- float fovInRadians = (_panoramaOptions.fieldOfView * M_PI / 180.0f);
+ float fovInRadians = Common::deg2rad<float>(_panoramaOptions.fieldOfView);
float cylinderRadius = halfHeight / tan(fovInRadians);
for (uint x = 0; x < _numColumns; ++x) {
@@ -176,7 +178,7 @@ void RenderTable::generateTiltLookupTable() {
float halfWidth = (float)_numColumns / 2.0f;
float halfHeight = (float)_numRows / 2.0f;
- float fovInRadians = (_tiltOptions.fieldOfView * M_PI / 180.0f);
+ float fovInRadians = Common::deg2rad<float>(_tiltOptions.fieldOfView);
float cylinderRadius = halfWidth / tan(fovInRadians);
_tiltOptions.gap = cylinderRadius * atan2((float)(halfHeight / cylinderRadius), 1.0f) * _tiltOptions.linearScale;
More information about the Scummvm-git-logs
mailing list