add normalize and normalized overloads in AlignedVector3

This commit is contained in:
Gael Guennebaud 2009-08-16 11:51:46 +02:00
parent 5274c5c326
commit ef13c3e754
2 changed files with 16 additions and 1 deletions

View File

@ -152,9 +152,20 @@ template<typename _Scalar> class AlignedVector3
{ {
ei_assert(m_coeffs.w()==Scalar(0)); ei_assert(m_coeffs.w()==Scalar(0));
ei_assert(other.m_coeffs.w()==Scalar(0)); ei_assert(other.m_coeffs.w()==Scalar(0));
Scalar r = m_coeffs.dot(other.m_coeffs);
return m_coeffs.dot(other.m_coeffs); return m_coeffs.dot(other.m_coeffs);
} }
inline void normalize()
{
m_coeffs /= norm();
}
inline AlignedVector3 normalized()
{
return AlignedVector3(m_coeffs / norm());
}
inline Scalar sum() const inline Scalar sum() const
{ {
ei_assert(m_coeffs.w()==Scalar(0)); ei_assert(m_coeffs.w()==Scalar(0));

View File

@ -57,6 +57,10 @@ void alignedvector3()
VERIFY_IS_APPROX(f2.cross(f3),r2.cross(r3)); VERIFY_IS_APPROX(f2.cross(f3),r2.cross(r3));
VERIFY_IS_APPROX(f2.norm(),r2.norm()); VERIFY_IS_APPROX(f2.norm(),r2.norm());
VERIFY_IS_APPROX(f2.normalized(),r2.normalized());
VERIFY_IS_APPROX((f2+f1).normalized(),(r2+r1).normalized());
f2.normalize(); f2.normalize();
r2.normalize(); r2.normalize();
VERIFY_IS_APPROX(f2,r2); VERIFY_IS_APPROX(f2,r2);