diff --git a/dune/gfe/rigidbodymotion.hh b/dune/gfe/rigidbodymotion.hh
index 124347ed12008bdc4c81b10da08b65d0cb7dc341..f7ce7f78d91da5965e1e19015abb8bdf59247c5f 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) {