[Lemon-commits] [lemon_svn] athos: r344 - hugo/trunk/src/work/athos/xy

Lemon SVN svn at lemon.cs.elte.hu
Mon Nov 6 20:38:54 CET 2006


Author: athos
Date: Thu Mar 25 18:38:45 2004
New Revision: 344

Removed:
   hugo/trunk/src/work/athos/xy/boundingbox.h
Modified:
   hugo/trunk/src/work/athos/xy/boundingbox.cc
   hugo/trunk/src/work/athos/xy/xy.h

Log:
Betettem 1 file-ba a boundingbox-ot és az xy-t + egyéb apró módosítások.


Modified: hugo/trunk/src/work/athos/xy/boundingbox.cc
==============================================================================
--- hugo/trunk/src/work/athos/xy/boundingbox.cc	(original)
+++ hugo/trunk/src/work/athos/xy/boundingbox.cc	Thu Mar 25 18:38:45 2004
@@ -1,4 +1,4 @@
-#include <boundingbox.h>
+#include <xy.h>
 
 #include <iostream>
 using namespace std;

Modified: hugo/trunk/src/work/athos/xy/xy.h
==============================================================================
--- hugo/trunk/src/work/athos/xy/xy.h	(original)
+++ hugo/trunk/src/work/athos/xy/xy.h	Thu Mar 25 18:38:45 2004
@@ -117,6 +117,89 @@
     return os;
   }
 
+
+  /** \brief
+     Implementation of a bounding box of plainvectors.
+     
+  */
+  template<typename T>
+    class BoundingBox {
+      xy<T> bottom_left, top_right;
+      bool _empty;
+    public:
+      
+      ///Default constructor: an empty bounding box
+      BoundingBox() { _empty = true; }
+
+      ///Constructing the instance from one point
+      BoundingBox(xy<T> a) { bottom_left=top_right=a; _empty = false; }
+
+      ///Is there any point added
+      bool empty() const {
+	return _empty;
+      }
+
+      ///Gives back the bottom left corner (if the bounding box is empty, then the return value is not defined) 
+      xy<T> bottomLeft() const {
+	return bottom_left;
+      };
+
+      ///Gives back the top right corner (if the bounding box is empty, then the return value is not defined) 
+      xy<T> topRight() const {
+	return top_right;
+      };
+
+      ///Checks whether a point is inside a bounding box
+      bool inside(const xy<T>& u){
+	if (_empty)
+	  return false;
+	else{
+	  return ((u.x-bottom_left.x)*(top_right.x-u.x) >= 0 &&
+		  (u.y-bottom_left.y)*(top_right.y-u.y) >= 0 );
+	}
+      }
+  
+      ///Increments a bounding box with a point
+      BoundingBox& operator +=(const xy<T>& u){
+	if (_empty){
+	  bottom_left=top_right=u;
+	  _empty = false;
+	}
+	else{
+	  if (bottom_left.x > u.x) bottom_left.x = u.x;
+	  if (bottom_left.y > u.y) bottom_left.y = u.y;
+	  if (top_right.x < u.x) top_right.x = u.x;
+	  if (top_right.y < u.y) top_right.y = u.y;
+	}
+	return *this;
+      };
+  
+      ///Sums a bounding box and a point
+      BoundingBox operator +(const xy<T>& u){
+	BoundingBox b = *this;
+	return b += u;
+      };
+
+      ///Increments a bounding box with an other bounding box
+      BoundingBox& operator +=(const BoundingBox &u){
+	if ( !u.empty() ){
+	  *this += u.bottomLeft();
+	  *this += u.topRight();
+	}
+	return *this;
+      };
+  
+      ///Sums two bounding boxes
+      BoundingBox operator +(const BoundingBox& u){
+	BoundingBox b = *this;
+	return b += u;
+      };
+
+    };//class Boundingbox
+
+
+
+
 } //namespace hugo
 
 #endif //HUGO_XY_H



More information about the Lemon-commits mailing list