blob: e53ad7cea8bfdf14555fdaa02ce15f443db9e2a8 (
plain) (
tree)
|
|
/*
** 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;
}
|