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 _CVPTINTERSECTOR_H
00034 #define _CVPTINTERSECTOR_H
00035
00036
00037 #include "Intersector2Obj.h"
00038
00039
00040 namespace Go {
00043
00044
00045
00048
00049 class CvPtIntersector : public Intersector2Obj {
00050 public:
00051
00068 CvPtIntersector(boost::shared_ptr<ParamGeomInt> obj1,
00069 boost::shared_ptr<ParamGeomInt> obj2,
00070 boost::shared_ptr<GeoTol> epsge,
00071 Intersector *prev = 0,
00072 int eliminated_parameter = -1,
00073 double eliminated_value = 0);
00074
00091 CvPtIntersector(boost::shared_ptr<ParamGeomInt> obj1,
00092 boost::shared_ptr<ParamGeomInt> obj2,
00093 double epsge,
00094 Intersector *prev = 0,
00095 int eliminated_parameter = -1,
00096 double eliminated_value = 0);
00097
00099 virtual ~CvPtIntersector();
00100
00101
00102
00103
00106 virtual int numParams() const
00107 { return 1; }
00108
00109 protected:
00110
00111
00112 virtual boost::shared_ptr<Intersector>
00113 lowerOrderIntersector(boost::shared_ptr<ParamGeomInt> obj1,
00114 boost::shared_ptr<ParamGeomInt> obj2,
00115 Intersector* prev = 0,
00116 int eliminated_parameter = -1,
00117 double eliminated_value = 0);
00118
00119 virtual int checkCoincidence();
00120
00121 virtual void microCase();
00122
00123 virtual int updateIntersections();
00124
00125 virtual int repairIntersections()
00126 { return 0; }
00127
00128 virtual int linearCase();
00129
00130 virtual int doSubdivide();
00131
00132 private:
00133 int cv_idx_, pt_idx_;
00134
00135
00136 int sortParameterDirections();
00137
00138 SubdivisionClassification getSubdivisionParameter(double& par);
00139
00140 };
00141
00142
00144 }
00145
00146
00147 #endif // _CVPTINTERSECTOR_H
00148