From 2c4f0b52e3ffdf82622547f0a00ef4751eb6cedf Mon Sep 17 00:00:00 2001
From: valerio <valerio@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Mon, 26 Jul 2010 14:04:14 +0000
Subject: [PATCH] Fix for Angle(Vec3,Vec3) returning nan

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2590 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/geom/src/vecmat3_op.cc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/modules/geom/src/vecmat3_op.cc b/modules/geom/src/vecmat3_op.cc
index 8ef740e37..4c6a2732a 100644
--- a/modules/geom/src/vecmat3_op.cc
+++ b/modules/geom/src/vecmat3_op.cc
@@ -95,7 +95,10 @@ Real Det(const Mat3& m)
 
 Real Angle(const Vec3& v1, const Vec3& v2)
 {
-  return std::acos(Dot(Normalize(v1), Normalize(v2)));
+  Real dot_product = Dot(Normalize(v1), Normalize(v2));
+  dot_product=std::max(static_cast<Real>(-1.0),dot_product);
+  dot_product=std::min(static_cast<Real>(1.0),dot_product);
+  return std::acos(dot_product);
 }
 
 Mat3 EulerTransformation(Real theta, Real phi, Real xi)
-- 
GitLab