Rectf: Implement distance().
authorflorianf <florianf@837edb03-e0f3-0310-88ca-d4d4e8b29345>
Sun, 28 Feb 2010 10:51:32 +0000 (10:51 +0000)
committerflorianf <florianf@837edb03-e0f3-0310-88ca-d4d4e8b29345>
Sun, 28 Feb 2010 10:51:32 +0000 (10:51 +0000)
Calculates the distance from this rectangle to another rectangle or a vector.

git-svn-id: http://supertux.lethargik.org/svn/supertux/trunk/supertux@6447 837edb03-e0f3-0310-88ca-d4d4e8b29345

src/math/rectf.hpp

index f34bb43..f9d4565 100644 (file)
@@ -20,6 +20,7 @@
 #include <assert.h>
 
 #include "math/vector.hpp"
+#include "object/anchor_point.hpp"
 
 /** This class represents a rectangle.
  * (Implementation Note) We're using upper left and lower right point instead of
@@ -109,6 +110,20 @@ public:
     return true;
   }
 
+  float distance (const Vector& other, AnchorPoint ap = ANCHOR_MIDDLE) const
+  {
+    Vector v = get_anchor_pos (*this, ap);
+    return ((v - other).norm ());
+  }
+
+  float distance (const Rectf& other, AnchorPoint ap = ANCHOR_MIDDLE) const
+  {
+    Vector v1 = get_anchor_pos (*this, ap);
+    Vector v2 = get_anchor_pos (other, ap);
+
+    return ((v1 - v2).norm ());
+  }
+
   // leave these two public to save the headaches of set/get functions for such
   // simple things :)