00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef BOUNDINGBOX_H
00013 #define BOUNDINGBOX_H
00014
00015 #ifdef __GNUG__
00016 #pragma interface
00017 #endif
00018
00019
00020 #include "point.h"
00021 #include "wxmatrix.h"
00022 #include "gdserr.h"
00023
00024 enum OVERLAP {_IN,_ON,_OUT};
00025
00026 class BoundingBox
00027 {
00028 public:
00029
00030 BoundingBox();
00031
00032 BoundingBox(BoundingBox&);
00033
00034 BoundingBox(const Point&);
00035
00036
00037 BoundingBox(double xmin, double ymin, double xmax, double ymax);
00038
00039 bool And(BoundingBox*, double Marge = 0);
00040
00041 void EnLarge(const double Marge);
00042 void Shrink(const double Marge);
00043
00044 void Expand(const Point&,const Point&);
00045 void Expand(const Point&);
00046 void Expand(double x,double y);
00047 void Expand(BoundingBox&);
00048
00049 OVERLAP Intersect(BoundingBox &, double Marge = 0);
00050 bool LineIntersect(const Point&,const Point&);
00051 bool PointInBox(const Point&, double Marge = 0);
00052 bool PointInBox(double, double, double Marge = 0);
00053
00054 void Reset();
00055
00056 void SetBoundingBox(const Point&);
00057
00058 void Translate(Point&);
00059 void MapBbox(wxTransformMatrix*);
00060 Point GetMin();
00061 Point GetMax();
00062 double GetWidth(){return _xmax-_xmin;};
00063 double GetHeight(){return _ymax-_ymin;};
00064 bool GetValid();
00065 void SetMin(double, double);
00066 void SetMax(double, double);
00067 void SetValid(bool);
00068
00069 BoundingBox& operator+(BoundingBox&);
00070 BoundingBox& operator=(BoundingBox&);
00071
00072 protected:
00073 double Min(double, double);
00074 double Max(double, double);
00075
00076 double _xmin;
00077 double _ymin;
00078 double _xmax;
00079 double _ymax;
00080 bool _valid_bbox;
00081 };
00082
00083 #endif
bbox.h Source File -- Thu Nov 28 21:24:55 2002 -- 28 Nov 2002 -- 1.2.18 -- -- . --