diff options
Diffstat (limited to '')
-rw-r--r-- | src/General.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/General.h b/src/General.h index 41bdf5d7..fd78edaa 100644 --- a/src/General.h +++ b/src/General.h @@ -40,6 +40,48 @@ public: } } + static float LimitRadianAngle(float angle) + { + if (angle < -25.0f) + angle = -25.0f; + + if (angle > 25.0f) + angle = 25.0f; + + float result = angle; + + while (result >= PI) { + result -= 2 * PI; + } + + while (result < -PI) { + result += 2 * PI; + } + + return result; + } + + static float GetRadianAngleBetweenPoints(float x1, float y1, float x2, float y2) + { + float x = x2 - x1; + float y = y2 - y1; + + if (y == 0.0f) + y = 0.0001f; + + if (x > 0.0f) { + if (y > 0.0f) + return 2 * PI - atan2(x / y, 1.0f); + else + return -atan2(x / y, 1.0f); + } else { + if (y > 0.0f) + return -(PI + atan2(x / y, 1.0f)); + else + return -atan2(x / y, 1.0f); + } + } + // not too sure about all these... static uint16 GetRandomNumber(void) { return myrand() & 0xFFFF; } |