aboutsummaryrefslogtreecommitdiff
path: root/archive/hgehelp/hgevector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archive/hgehelp/hgevector.cpp')
-rw-r--r--archive/hgehelp/hgevector.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/archive/hgehelp/hgevector.cpp b/archive/hgehelp/hgevector.cpp
new file mode 100644
index 0000000..921f7b7
--- /dev/null
+++ b/archive/hgehelp/hgevector.cpp
@@ -0,0 +1,69 @@
+/*
+** Haaf's Game Engine 1.7
+** Copyright (C) 2003-2007, Relish Games
+** hge.relishgames.com
+**
+** hgeVector helper class implementation
+*/
+
+
+#include "hgevector.h"
+
+float InvSqrt(float x)
+{
+ union
+ {
+ int intPart;
+ float floatPart;
+ } convertor;
+
+ convertor.floatPart = x;
+ convertor.intPart = 0x5f3759df - (convertor.intPart >> 1);
+ return convertor.floatPart*(1.5f - 0.4999f*x*convertor.floatPart*convertor.floatPart);
+}
+
+/*
+hgeVector *hgeVector::Normalize()
+{
+ float lenRcp;
+
+ lenRcp=sqrtf(Dot(this));
+
+ if(lenRcp)
+ {
+ lenRcp=1.0f/lenRcp;
+
+ x*=lenRcp;
+ y*=lenRcp;
+ }
+
+ return this;
+}
+*/
+
+float hgeVector::Angle(const hgeVector *v) const
+{
+ if(v)
+ {
+ hgeVector s=*this, t=*v;
+
+ s.Normalize(); t.Normalize();
+ return acosf(s.Dot(&t));
+ }
+ else return atan2f(y, x);
+}
+
+hgeVector *hgeVector::Rotate(float a)
+{
+ hgeVector v;
+
+ v.x=x*cosf(a) - y*sinf(a);
+ v.y=x*sinf(a) + y*cosf(a);
+
+ x=v.x; y=v.y;
+
+ return this;
+}
+
+
+