From ce2c2bd825a0783154a4c345f96a5398e492d384 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 7 Sep 2010 20:23:44 +0000 Subject: [PATCH] - replaced AM_Rotate with a more precise floating point version posted by Entryway. SVN r2713 (trunk) --- src/am_map.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/am_map.cpp b/src/am_map.cpp index 0a0dafd66e..f3f7d7a390 100644 --- a/src/am_map.cpp +++ b/src/am_map.cpp @@ -1938,14 +1938,19 @@ void AM_drawWalls (bool allmap) // //============================================================================= -void AM_rotate (fixed_t *x, fixed_t *y, angle_t a) +void AM_rotate(fixed_t *xp, fixed_t *yp, angle_t a) { - fixed_t tmpx; + double x = FIXED2FLOAT(*xp); + double y = FIXED2FLOAT(*yp); + double rot = (double)a / (double)(1u << 31) * (double)M_PI; + double sinrot = sin(rot); + double cosrot = cos(rot); - a >>= ANGLETOFINESHIFT; - tmpx = DMulScale16 (*x,finecosine[a],*y,-finesine[a]); - *y = DMulScale16 (*x,finesine[a],*y,finecosine[a]); - *x = tmpx; + double tmpx = (x * cosrot) - (y * sinrot); + y = (x * sinrot) + (y * cosrot); + x = tmpx; + *xp = FLOAT2FIXED(x); + *yp = FLOAT2FIXED(y); } //=============================================================================