[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