Skip to content

# scummvm/scummvm

GRAPHICS: Simplify trig usage in primitives

```Combined if statements and simplified trig.

cos(atan2(y,x)) = x / sqrt(x^2 + y^2) and
sin(atan2(y,x)) = y / sqrt(x^2 + y^2).```
• Loading branch information...
dafioram committed Sep 8, 2018
1 parent 5d77ade commit a66e661df194963d4e649d122c33255e05a2e588
Showing with 7 additions and 12 deletions.
1. +7 −12 graphics/primitives.cpp
 @@ -121,19 +121,16 @@ void drawThickLine2(int x1, int y1, int x2, int y2, int thick, int color, void ( if (dy <= dx) { /* More-or-less horizontal. use wid for vertical stroke */ /* Doug Claar: watch out for NaN in atan2 (2.0.5) */ /* 2.0.12: Michael Schwartz: divide rather than multiply; TBB: but watch out for /0! */ double ac = cos(atan2((double)dy, (double)dx)); if (ac != 0) { wid = thick / ac; if (dx != 0 && thick != 0) { double ac_recip = 1/dx * sqrt(dx * dx + dy * dy); // 1 / cos(atan2((double)dy, (double)dx)); wid = thick * ac_recip; } else { wid = 1; } if (wid == 0) { wid = 1; } d = 2 * dy - dx; incr1 = 2 * dy; incr2 = 2 * (dy - dx); @@ -185,14 +182,12 @@ void drawThickLine2(int x1, int y1, int x2, int y2, int thick, int color, void ( /* More-or-less vertical. use wid for horizontal stroke */ /* 2.0.12: Michael Schwartz: divide rather than multiply; TBB: but watch out for /0! */ double as = sin(atan2((double)dy, (double)dx)); if (as != 0) { wid = thick / as; if (dy != 0 && thick != 0) { double as_recip = 1/dy * sqrt(dx * dx + dy * dy); // 1 / sin(atan2((double)dy, (double)dx)); wid = thick * as_recip; } else { wid = 1; } if (wid == 0) wid = 1; d = 2 * dx - dy; incr1 = 2 * dx;

#### 0 comments on commit `a66e661`

Please sign in to comment.
You can’t perform that action at this time.