// 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 #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _IntAna_ResultType_HeaderFile #include #endif #ifndef _gp_Pnt_HeaderFile #include #endif #ifndef _gp_Dir_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif class StdFail_NotDone; class Standard_DomainError; class Standard_OutOfRange; class gp_Pln; class gp_Cylinder; class gp_Sphere; class gp_Cone; 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: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! 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.
Standard_EXPORT IntAna_QuadQuadGeo(const gp_Pln& P,const gp_Cylinder& C,const Standard_Real Tolang,const Standard_Real Tol); //! 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.
Standard_EXPORT void Perform(const gp_Pln& P,const gp_Cylinder& C,const Standard_Real Tolang,const Standard_Real Tol) ; //! 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) ; //! 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_Dir dir1; gp_Dir dir2; Standard_Real param1; Standard_Real param2; 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 // other Inline functions and methods (like "C++: function call" methods) #endif