- fixed: TVector::Resized needs to consider that the input vector has a length of 0. In this case just performing the normal calculations results in an invalid vector.

This commit is contained in:
Christoph Oelckers 2016-10-03 11:00:26 +02:00
parent 201ae3c60f
commit 41ab08ee47
1 changed files with 18 additions and 6 deletions

View File

@ -556,17 +556,29 @@ struct TVector3
// Resizes this vector to be the specified length (if it is not 0)
TVector3 &MakeResize(double len)
{
double scale = len / Length();
X = vec_t(X * scale);
Y = vec_t(Y * scale);
Z = vec_t(Z * scale);
double vlen = Length();
if (vlen != 0.)
{
double scale = len / vlen;
X = vec_t(X * scale);
Y = vec_t(Y * scale);
Z = vec_t(Z * scale);
}
return *this;
}
TVector3 Resized(double len)
{
double scale = len / Length();
return{ vec_t(X * scale), vec_t(Y * scale), vec_t(Z * scale) };
double vlen = Length();
if (vlen != 0.)
{
double scale = len / vlen;
return{ vec_t(X * scale), vec_t(Y * scale), vec_t(Z * scale) };
}
else
{
return *this;
}
}
// Dot product