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 _CLOSESTPTSURFSURFPLANE_H
00034 #define _CLOSESTPTSURFSURFPLANE_H
00035
00043 #include "ParamSurface.h"
00044
00045 namespace Go {
00048
00055 enum AlgorithmChoice {GEOMETRICAL, FUNCTIONAL};
00056
00084 void closestPtSurfSurfPlane(const std::vector<Point>& epoint,
00085 const std::vector<Point>& epnt1,
00086 const std::vector<Point>& epnt2,
00087 const Point& epar1,
00088 const Point& epar2,
00089 const ParamSurface* psurf1,
00090 const ParamSurface* psurf2,
00091 double aepsge,
00092 std::vector<Point>& gpnt1,
00093 std::vector<Point>& gpnt2,
00094 Point& gpar1,
00095 Point& gpar2,
00096 int& jstat,
00097 AlgorithmChoice algo = FUNCTIONAL);
00098
00099
00105 void closestPtSurfSurfPlaneGeometrical(const std::vector<Point>& epoint,
00106 const std::vector<Point>& epnt1,
00107 const std::vector<Point>& epnt2,
00108 const Point& epar1,
00109 const Point& epar2,
00110 const ParamSurface* psurf1,
00111 const ParamSurface* psurf2,
00112 double aepsge,
00113 std::vector<Point>& gpnt1,
00114 std::vector<Point>& gpnt2,
00115 Point& gpar1, Point& gpar2, int& jstat);
00116
00122 void
00123 closestPtSurfSurfPlaneFunctional(const std::vector<Point>& epoint,
00124 const std::vector<Point>& epnt1,
00125 const std::vector<Point>& epnt2,
00126 const Point& epar1,
00127 const Point& epar2,
00128 const ParamSurface* psurf1,
00129 const ParamSurface* psurf2,
00130 double aepsge,
00131 std::vector<Point>& gpnt1,
00132 std::vector<Point>& gpnt2,
00133 Point& gpar1, Point& gpar2, int& jstat);
00134
00135
00136
00138 namespace {
00141
00155 void nextStep(const std::vector<Point>& fpnt,const std::vector<Point>& gpnt,
00156 const Point& snorm, const Point& spoint,
00157 Point& delta, int& kstat);
00158
00160 }
00163
00164
00166 }
00167
00168 #endif // _CLOSESTPTSURFSURFPLANE_H
00169