From 427595d9cb05673b9c1b5b83e0c86259a36c81f5 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Sun, 9 Jan 2011 16:35:10 +0000
Subject: [PATCH] add method 'distance'

[[Imported from SVN: r6705]]
---
 dune/gfe/rigidbodymotion.hh | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/dune/gfe/rigidbodymotion.hh b/dune/gfe/rigidbodymotion.hh
index 124347ed..f7ce7f78 100644
--- a/dune/gfe/rigidbodymotion.hh
+++ b/dune/gfe/rigidbodymotion.hh
@@ -38,6 +38,16 @@ struct RigidBodyMotion
         return result;
     }
 
+    /** \brief Compute geodesic distance from a to b */
+    static T distance(const RigidBodyMotion<dim,ctype>& a, const RigidBodyMotion<dim,ctype>& b) {
+        
+        T euclideanDistanceSquared = (a.r - b.r).two_norm2();
+        
+        T rotationDistance = Rotation<dim,ctype>::distance(a.q, b.q);
+        
+        return std::sqrt(euclideanDistanceSquared + rotationDistance*rotationDistance);
+    }
+    
     /** \brief Compute difference vector from a to b on the tangent space of a */
     static TangentVector difference(const RigidBodyMotion<dim,ctype>& a,
                                     const RigidBodyMotion<dim,ctype>& b) {
-- 
GitLab