summaryrefslogtreecommitdiffstats
path: root/src/math
diff options
context:
space:
mode:
Diffstat (limited to 'src/math')
-rw-r--r--src/math/Vector2D.h12
-rw-r--r--src/math/math.cpp13
2 files changed, 20 insertions, 5 deletions
diff --git a/src/math/Vector2D.h b/src/math/Vector2D.h
index 705ad763..0885a5d2 100644
--- a/src/math/Vector2D.h
+++ b/src/math/Vector2D.h
@@ -11,16 +11,18 @@ public:
float Magnitude(void) const { return Sqrt(x*x + y*y); }
float MagnitudeSqr(void) const { return x*x + y*y; }
- void Normalise(void){
+ void Normalise(void);
+
+ void NormaliseSafe(void) {
float sq = MagnitudeSqr();
- //if(sq > 0.0f){
+ if(sq > 0.0f){
float invsqrt = RecipSqrt(sq);
x *= invsqrt;
y *= invsqrt;
- //}else
- // x = 1.0f;
+ }else
+ y = 1.0f;
}
-
+
const CVector2D &operator+=(CVector2D const &right) {
x += right.x;
y += right.y;
diff --git a/src/math/math.cpp b/src/math/math.cpp
index e11d048c..eeb9d3fa 100644
--- a/src/math/math.cpp
+++ b/src/math/math.cpp
@@ -5,6 +5,19 @@
// TODO: move more stuff into here
void
+CVector2D::Normalise(void)
+{
+ float sq = MagnitudeSqr();
+ assert(sq != 0.0f); // just be safe here
+ //if(sq > 0.0f){
+ float invsqrt = RecipSqrt(sq);
+ x *= invsqrt;
+ y *= invsqrt;
+ //}else
+ // x = 1.0f;
+}
+
+void
CMatrix::SetRotate(float xAngle, float yAngle, float zAngle)
{
float cX = Cos(xAngle);