diff options
author | chirs241097@gmail.com <chirs241097@gmail.com@c17bf020-1265-9734-9302-a83f62007ddb> | 2014-01-12 14:43:14 +0000 |
---|---|---|
committer | chirs241097@gmail.com <chirs241097@gmail.com@c17bf020-1265-9734-9302-a83f62007ddb> | 2014-01-12 14:43:14 +0000 |
commit | c91847d549cc1c30eb15504a15ea9a6d5aa48165 (patch) | |
tree | b978d575f08f5f87d3c21eb9a024164636d1918a /hgehelp/hgevector.cpp | |
download | bullet-lab-remix-c91847d549cc1c30eb15504a15ea9a6d5aa48165.tar.xz |
Diffstat (limited to 'hgehelp/hgevector.cpp')
-rw-r--r-- | hgehelp/hgevector.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/hgehelp/hgevector.cpp b/hgehelp/hgevector.cpp new file mode 100644 index 0000000..e53ad7c --- /dev/null +++ b/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 "../../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; +} + + + |