aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-08-16 11:51:46 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-08-16 11:51:46 +0200
commitef13c3e754008e507eb67a9c5eab8dcb812777a1 (patch)
tree7fd1f1cba1a8c72c8e235ab76012b60c370147ba
parent5274c5c3262cea98d5b78962af5680e4ae6050c0 (diff)
add normalize and normalized overloads in AlignedVector3
-rw-r--r--unsupported/Eigen/AlignedVector311
-rw-r--r--unsupported/test/alignedvector3.cpp6
2 files changed, 16 insertions, 1 deletions
diff --git a/unsupported/Eigen/AlignedVector3 b/unsupported/Eigen/AlignedVector3
index f9f364eba..854f0601f 100644
--- a/unsupported/Eigen/AlignedVector3
+++ b/unsupported/Eigen/AlignedVector3
@@ -152,8 +152,19 @@ template<typename _Scalar> class AlignedVector3
{
ei_assert(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);
}
+
+ inline void normalize()
+ {
+ m_coeffs /= norm();
+ }
+
+ inline AlignedVector3 normalized()
+ {
+ return AlignedVector3(m_coeffs / norm());
+ }
inline Scalar sum() const
{
diff --git a/unsupported/test/alignedvector3.cpp b/unsupported/test/alignedvector3.cpp
index cf33dcceb..52d39ce50 100644
--- a/unsupported/test/alignedvector3.cpp
+++ b/unsupported/test/alignedvector3.cpp
@@ -40,7 +40,7 @@ void alignedvector3()
VERIFY_IS_APPROX(f1,r1);
VERIFY_IS_APPROX(f4,r4);
-
+
VERIFY_IS_APPROX(f4+f1,r4+r1);
VERIFY_IS_APPROX(f4-f1,r4-r1);
VERIFY_IS_APPROX(f4+f1-f2,r4+r1-r2);
@@ -56,6 +56,10 @@ void alignedvector3()
VERIFY_IS_APPROX(f2.dot(f3),r2.dot(r3));
VERIFY_IS_APPROX(f2.cross(f3),r2.cross(r3));
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();
r2.normalize();