implemented CVector2D::NormaliseSafe for SkidMarks

This commit is contained in:
aap 2020-04-17 15:15:42 +02:00
parent fd229ed47e
commit 6ef7924e01
3 changed files with 22 additions and 6 deletions

View file

@ -11,16 +11,18 @@ public:
float Magnitude(void) const { return Sqrt(x*x + y*y); }
float MagnitudeSqr(void) const { return x*x + y*y; }
void Normalise(void){
void Normalise(void);
void NormaliseSafe(void) {
float sq = MagnitudeSqr();
//if(sq > 0.0f){
if(sq > 0.0f){
float invsqrt = RecipSqrt(sq);
x *= invsqrt;
y *= invsqrt;
//}else
// x = 1.0f;
}else
y = 1.0f;
}
const CVector2D &operator+=(CVector2D const &right) {
x += right.x;
y += right.y;

View file

@ -4,6 +4,19 @@
// TODO: move more stuff into here
void
CVector2D::Normalise(void)
{
float sq = MagnitudeSqr();
assert(sq != 0.0f); // just be safe here
//if(sq > 0.0f){
float invsqrt = RecipSqrt(sq);
x *= invsqrt;
y *= invsqrt;
//}else
// x = 1.0f;
}
void
CMatrix::SetRotate(float xAngle, float yAngle, float zAngle)
{