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.
This commit is contained in:
David Fioramonti 2018-05-24 19:01:51 -07:00 committed by Thierry Crozat
parent e00881804f
commit 503f0c8f0b
2 changed files with 5 additions and 4 deletions

View file

@ -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 {

View file

@ -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);