00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _INTERSECTORFUNCOBJ_H
00034 #define _INTERSECTORFUNCOBJ_H
00035
00036
00037 #include "Intersector.h"
00038
00039
00040 namespace Go {
00043
00044
00045
00046 class ParamFunctionInt;
00047
00048
00051
00052 class IntersectorFuncConst : public Intersector {
00053 public:
00054
00067 IntersectorFuncConst(boost::shared_ptr<ParamFunctionInt> func,
00068 boost::shared_ptr<ParamFunctionInt> C,
00069 boost::shared_ptr<GeoTol> epsge,
00070 Intersector* prev = 0,
00071 int eliminated_parameter = -1,
00072 double eliminated_value = 0);
00073
00075 virtual ~IntersectorFuncConst();
00076
00077
00078
00079
00080 friend class IntersectorAlgPar;
00081
00082 protected:
00083
00084 boost::shared_ptr<ParamFunctionInt> func_int_;
00085 boost::shared_ptr<ParamFunctionInt> C_;
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 virtual void print_objs();
00096
00097 virtual boost::shared_ptr<Intersector>
00098 lowerOrderIntersector(boost::shared_ptr<ParamFunctionInt> obj1,
00099 boost::shared_ptr<ParamFunctionInt> obj2,
00100 Intersector* prev = 0,
00101 int eliminated_parameter = -1,
00102 double eliminated_value = 0) = 0;
00103
00104 virtual int getBoundaryIntersections();
00105
00106 virtual int performInterception();
00107
00108 virtual int simpleCase();
00109
00110 virtual bool isLinear();
00111
00112 virtual bool complexityReduced()
00113 {
00114
00115 return true;
00116 }
00117
00118 virtual void handleComplexity()
00119 {
00120
00121
00122 }
00123
00124 virtual int checkCoincidence() = 0;
00125
00126 virtual void microCase() = 0;
00127
00128 virtual int updateIntersections() = 0;
00129
00130 virtual int linearCase();
00131
00132 virtual int doSubdivide() = 0;
00133
00134 virtual void printDebugInfo();
00135
00136 private:
00137
00138 };
00139
00140
00142 }
00143
00144
00145 #endif // _INTERSECTORFUNCOBJ_H
00146
00147