This commit is contained in:
@@ -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/hge/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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user