1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277
|
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _IntAna_QuadQuadGeo_HeaderFile
#define _IntAna_QuadQuadGeo_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Macro.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
#include <IntAna_ResultType.hxx>
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
#include <Standard_Real.hxx>
class StdFail_NotDone;
class Standard_DomainError;
class Standard_OutOfRange;
class gp_Pln;
class gp_Cylinder;
class gp_Sphere;
class gp_Cone;
class gp_Torus;
class gp_Pnt;
class gp_Lin;
class gp_Circ;
class gp_Elips;
class gp_Parab;
class gp_Hypr;
//! Geometric intersections between two natural quadrics
//! (Sphere , Cylinder , Cone , Pln from gp).
//! The possible intersections are :
//! - 1 point
//! - 1 or 2 line(s)
//! - 1 Point and 1 Line
//! - 1 circle
//! - 1 ellipse
//! - 1 parabola
//! - 1 or 2 hyperbola(s).
//! - Empty : there is no intersection between the two quadrics.
//! - Same : the quadrics are identical
//! - NoGeometricSolution : there may be an intersection, but it
//! is necessary to use an analytic algorithm to determine
//! it. See class IntQuadQuad from IntAna.
class IntAna_QuadQuadGeo
{
public:
DEFINE_STANDARD_ALLOC
//! Empty constructor.
Standard_EXPORT IntAna_QuadQuadGeo();
//! Creates the intersection between two planes.
//! TolAng is the angular tolerance used to determine
//! if the planes are parallel.
//! Tol is the tolerance used to determine if the planes
//! are identical (only when they are parallel).
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P1, const gp_Pln& P2, const Standard_Real TolAng, const Standard_Real Tol);
//! Intersects two planes.
//! TolAng is the angular tolerance used to determine
//! if the planes are parallel.
//! Tol is the tolerance used to determine if the planes
//! are identical (only when they are parallel).
Standard_EXPORT void Perform (const gp_Pln& P1, const gp_Pln& P2, const Standard_Real TolAng, const Standard_Real Tol) ;
//! Creates the intersection between a plane and a cylinder.
//! TolAng is the angular tolerance used to determine
//! if the axis of the cylinder is parallel to the plane.
//! Tol is the tolerance used to determine if the result
//! is a circle or an ellipse. If the maximum distance between
//! the ellipse solution and the circle centered at the ellipse
//! center is less than Tol, the result will be the circle.
//! H is the height of the cylinder <Cyl>. It is used to check
//! whether the plane and cylinder are parallel.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P, const gp_Cylinder& C, const Standard_Real Tolang, const Standard_Real Tol, const Standard_Real H = 0);
//! Intersects a plane and a cylinder.
//! TolAng is the angular tolerance used to determine
//! if the axis of the cylinder is parallel to the plane.
//! Tol is the tolerance used to determine if the result
//! is a circle or an ellipse. If the maximum distance between
//! the ellipse solution and the circle centered at the ellipse
//! center is less than Tol, the result will be the circle.
//! H is the height of the cylinder <Cyl>. It is used to check
//! whether the plane and cylinder are parallel.
Standard_EXPORT void Perform (const gp_Pln& P, const gp_Cylinder& C, const Standard_Real Tolang, const Standard_Real Tol, const Standard_Real H = 0) ;
//! Creates the intersection between a plane and a sphere.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P, const gp_Sphere& S);
//! Intersects a plane and a sphere.
Standard_EXPORT void Perform (const gp_Pln& P, const gp_Sphere& S) ;
//! Creates the intersection between a plane and a cone.
//! TolAng is the angular tolerance used to determine
//! if the axis of the cone is parallel or perpendicular
//! to the plane, and if the generating line of the cone
//! is parallel to the plane.
//! Tol is the tolerance used to determine if the apex
//! of the cone is in the plane.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P, const gp_Cone& C, const Standard_Real Tolang, const Standard_Real Tol);
//! Intersects a plane and a cone.
//! TolAng is the angular tolerance used to determine
//! if the axis of the cone is parallel or perpendicular
//! to the plane, and if the generating line of the cone
//! is parallel to the plane.
//! Tol is the tolerance used to determine if the apex
//! of the cone is in the plane.
Standard_EXPORT void Perform (const gp_Pln& P, const gp_Cone& C, const Standard_Real Tolang, const Standard_Real Tol) ;
//! Creates the intersection between two cylinders.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl1, const gp_Cylinder& Cyl2, const Standard_Real Tol);
//! Intersects two cylinders
Standard_EXPORT void Perform (const gp_Cylinder& Cyl1, const gp_Cylinder& Cyl2, const Standard_Real Tol) ;
//! Creates the intersection between a Cylinder and a Sphere.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl, const gp_Sphere& Sph, const Standard_Real Tol);
//! Intersects a cylinder and a sphere.
Standard_EXPORT void Perform (const gp_Cylinder& Cyl, const gp_Sphere& Sph, const Standard_Real Tol) ;
//! Creates the intersection between a Cylinder and a Cone
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl, const gp_Cone& Con, const Standard_Real Tol);
//! Intersects a cylinder and a cone.
Standard_EXPORT void Perform (const gp_Cylinder& Cyl, const gp_Cone& Con, const Standard_Real Tol) ;
//! Creates the intersection between two Spheres.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Sphere& Sph1, const gp_Sphere& Sph2, const Standard_Real Tol);
//! Intersects a two spheres.
Standard_EXPORT void Perform (const gp_Sphere& Sph1, const gp_Sphere& Sph2, const Standard_Real Tol) ;
//! Creates the intersection beween a Sphere and a Cone.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Sphere& Sph, const gp_Cone& Con, const Standard_Real Tol);
//! Intersects a sphere and a cone.
Standard_EXPORT void Perform (const gp_Sphere& Sph, const gp_Cone& Con, const Standard_Real Tol) ;
//! Creates the intersection beween two cones.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cone& Con1, const gp_Cone& Con2, const Standard_Real Tol);
//! Intersects two cones.
Standard_EXPORT void Perform (const gp_Cone& Con1, const gp_Cone& Con2, const Standard_Real Tol) ;
//! Creates the intersection beween plane and torus.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& Pln, const gp_Torus& Tor, const Standard_Real Tol);
//! Intersects plane and torus.
Standard_EXPORT void Perform (const gp_Pln& Pln, const gp_Torus& Tor, const Standard_Real Tol) ;
//! Creates the intersection beween cylinder and torus.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cylinder& Cyl, const gp_Torus& Tor, const Standard_Real Tol);
//! Intersects cylinder and torus.
Standard_EXPORT void Perform (const gp_Cylinder& Cyl, const gp_Torus& Tor, const Standard_Real Tol) ;
//! Creates the intersection beween cone and torus.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Cone& Con, const gp_Torus& Tor, const Standard_Real Tol);
//! Intersects cone and torus.
Standard_EXPORT void Perform (const gp_Cone& Con, const gp_Torus& Tor, const Standard_Real Tol) ;
//! Creates the intersection beween sphere and torus.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Sphere& Sph, const gp_Torus& Tor, const Standard_Real Tol);
//! Intersects sphere and torus.
Standard_EXPORT void Perform (const gp_Sphere& Sph, const gp_Torus& Tor, const Standard_Real Tol) ;
//! Creates the intersection beween two toruses.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Torus& Tor1, const gp_Torus& Tor2, const Standard_Real Tol);
//! Intersects two toruses.
Standard_EXPORT void Perform (const gp_Torus& Tor1, const gp_Torus& Tor2, const Standard_Real Tol) ;
//! Returns Standard_True if the computation was successful.
Standard_Boolean IsDone() const;
//! Returns the type of intersection.
IntAna_ResultType TypeInter() const;
//! Returns the number of interesections.
//! The possible intersections are :
//! - 1 point
//! - 1 or 2 line(s)
//! - 1 Point and 1 Line
//! - 1 circle
//! - 1 ellipse
//! - 1 parabola
//! - 1 or 2 hyperbola(s).
Standard_Integer NbSolutions() const;
//! Returns the point solution of range Num.
Standard_EXPORT gp_Pnt Point (const Standard_Integer Num) const;
//! Returns the line solution of range Num.
Standard_EXPORT gp_Lin Line (const Standard_Integer Num) const;
//! Returns the circle solution of range Num.
Standard_EXPORT gp_Circ Circle (const Standard_Integer Num) const;
//! Returns the ellipse solution of range Num.
Standard_EXPORT gp_Elips Ellipse (const Standard_Integer Num) const;
//! Returns the parabola solution of range Num.
Standard_EXPORT gp_Parab Parabola (const Standard_Integer Num) const;
//! Returns the hyperbola solution of range Num.
Standard_EXPORT gp_Hypr Hyperbola (const Standard_Integer Num) const;
Standard_EXPORT Standard_Boolean HasCommonGen() const;
Standard_EXPORT const gp_Pnt& PChar() const;
protected:
//! Initialize the values of inner tolerances.
Standard_EXPORT void InitTolerances() ;
Standard_Boolean done;
Standard_Integer nbint;
IntAna_ResultType typeres;
gp_Pnt pt1;
gp_Pnt pt2;
gp_Pnt pt3;
gp_Pnt pt4;
gp_Dir dir1;
gp_Dir dir2;
gp_Dir dir3;
gp_Dir dir4;
Standard_Real param1;
Standard_Real param2;
Standard_Real param3;
Standard_Real param4;
Standard_Real param1bis;
Standard_Real param2bis;
Standard_Real myEPSILON_DISTANCE;
Standard_Real myEPSILON_ANGLE_CONE;
Standard_Real myEPSILON_MINI_CIRCLE_RADIUS;
Standard_Real myEPSILON_CYLINDER_DELTA_RADIUS;
Standard_Real myEPSILON_CYLINDER_DELTA_DISTANCE;
Standard_Real myEPSILON_AXES_PARA;
Standard_Boolean myCommonGen;
gp_Pnt myPChar;
private:
};
#include <IntAna_QuadQuadGeo.lxx>
#endif // _IntAna_QuadQuadGeo_HeaderFile
|