hgevector.cpp
上传用户:maxiaolivb
上传日期:2022-06-07
资源大小:915k
文件大小:1k
- /*
- ** Haaf's Game Engine 1.5
- ** Copyright (C) 2003-2004, Relish Games
- ** hge.relishgames.com
- **
- ** hgeVector helper class implementation
- */
- #include "....includehgevector.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;
- }