// 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 _IntTools_EdgeEdge_HeaderFile #define _IntTools_EdgeEdge_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _TopoDS_Edge_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _BRepAdaptor_Curve_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _IntTools_SequenceOfRanges_HeaderFile #include #endif #ifndef _IntTools_CArray1OfReal_HeaderFile #include #endif #ifndef _IntTools_SequenceOfRoots_HeaderFile #include #endif #ifndef _IntTools_SequenceOfCommonPrts_HeaderFile #include #endif #ifndef _IntTools_Range_HeaderFile #include #endif class TopoDS_Edge; class IntTools_Range; class IntTools_SequenceOfCommonPrts; class IntTools_CommonPrt; class IntTools_CArray1OfReal; //! The class provides Edge/Edge algorithm to determine
//! common parts between two edges in 3-d space.
//! Common parts can be : Vertices or Edges.
//!
class IntTools_EdgeEdge { 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 IntTools_EdgeEdge(); //! Sets the first edge
Standard_EXPORT void SetEdge1(const TopoDS_Edge& anEdge) ; //! Sets the value of tolerance pipe for the first edge
Standard_EXPORT void SetTolerance1(const Standard_Real aTolEdge1) ; //! Sets the second edge
Standard_EXPORT void SetEdge2(const TopoDS_Edge& anEdge) ; //! Sets the value of tolerance pipe for the first edge
Standard_EXPORT void SetTolerance2(const Standard_Real aTolEdge2) ; //! Sets the number of division for the shortest
//! edge among the two. The deflection is not taken
//! into account
Standard_EXPORT void SetDiscretize(const Standard_Integer aDiscret) ; //! Sets the value of maximum reative deflection between
//! the two nearest points on a curve.
Standard_EXPORT void SetDeflection(const Standard_Real aDeflection) ; //! Sets the criteria of equality of two arguments,
//! i.e. |t2-t1| Standard_EXPORT void SetEpsilonT(const Standard_Real anEpsT) ; //! Sets the criteria of equality of two functions' values
//! i.e. |f(t2)-f(t1)| Standard_EXPORT void SetEpsilonNull(const Standard_Real anEpsNull) ; Standard_EXPORT void SetRange1(const IntTools_Range& aRange) ; Standard_EXPORT void SetRange2(const IntTools_Range& aRange) ; Standard_EXPORT void SetRange1(const Standard_Real aFirst,const Standard_Real aLast) ; Standard_EXPORT void SetRange2(const Standard_Real aFirst,const Standard_Real aLast) ; //! The main method of the algorithm to determine
//! common parts between two edges in 3-d space
Standard_EXPORT void Perform() ; //! True if the common parts are found
Standard_EXPORT Standard_Boolean IsDone() const; //! False if the common parts are coherented with Edge1, Edge2
Standard_EXPORT Standard_Boolean Order() const; //! Returns the number that corresponds to the error.
//! The list of error-codes is in ...cxx file
Standard_EXPORT Standard_Integer ErrorStatus() const; //! Returns the common parts (Output)
Standard_EXPORT const IntTools_SequenceOfCommonPrts& CommonParts() const; Standard_EXPORT const IntTools_Range& Range1() const; Standard_EXPORT const IntTools_Range& Range2() const; protected: private: //! Fool-proof chechking the input data.
//! The following data is not available
//! * Degenerated edges is not available;
//! * Egdes, that don't contain 3d-curve.
Standard_EXPORT void CheckData() ; //! Preparing the main fields for the algorithm
//! * From-Curve (myCFrom,myTminFrom,myTmaxFrom),
//! * To -Curve (myCTo ,myTminTo ,myTmaxTo ),
//! * myCreiteria=myTol1+myTol2 ,
//! * myProjectableRanges.
Standard_EXPORT void Prepare() ; //! Returns the flag 1 if it is possible to project
//! the point from the From-Curve at the parameter t
//! to the To-Curve.
//! Othrwise it returns 0.
Standard_EXPORT Standard_Integer IsProjectable(const Standard_Real t) const; //! Find a bound of a projectable range for the From-Curve
//! using bisection method.
//! t1, t2 - interval for searching along t.
//! f1, f2 - values of the function IsProjectable()
//! at t1 and t2.
Standard_EXPORT void FindProjectableRoot(const Standard_Real t1,const Standard_Real t2,const Standard_Integer f1,const Standard_Integer f2,Standard_Real& tRoot) ; //! Calculates the DistanceFunction D(t).
//! D(t)=D1(t) - myCriteria;
//! where
//! D1(t) - the lower distance between a point from
//! the From-Curve at parameter t and
//! projection point of this point on To-Curve;
//! myCriteria=myTol1+myTol2.
Standard_EXPORT Standard_Real DistanceFunction(const Standard_Real t) ; //! Calculates the first derivative of
//! the DistanceFunction D(t).
Standard_EXPORT Standard_Real DerivativeFunction(const Standard_Real t) ; //! Find the Root of the function on given interval
//! of the argument [ta,tb] using bisection method .
//! IP - a flag;
//! =1 - use DistanceFunction;
//! =2 - use DerivativeFunction;
Standard_EXPORT Standard_Real FindSimpleRoot(const Standard_Integer IP,const Standard_Real ta,const Standard_Real tb,const Standard_Real fA) ; //! Find the Root of the function on given interval
//! of the argument [ta,tb] using Fibonacci method .
Standard_EXPORT Standard_Real FindGoldRoot(const Standard_Real ta,const Standard_Real tb,const Standard_Real coeff) ; //! Find the range on the curve Curve-To that corresponds
//! to the given range on the curve Curve-From.
Standard_EXPORT Standard_Integer FindRangeOnCurve2(IntTools_CommonPrt& aCP) ; //! Find the value of the parameter on the curve Curve-To
//! that corresponds to the given parameter on the curve
//! Curve-From.
Standard_EXPORT Standard_Integer GetParameterOnCurve2(const Standard_Real aT1,Standard_Real& aT2) const; Standard_EXPORT Standard_Integer TreatVertexType(const Standard_Real am1,const Standard_Real am2,IntTools_CommonPrt& aCP) ; Standard_EXPORT void IsIntersection(const Standard_Real t1,const Standard_Real t2) ; Standard_EXPORT void FindDerivativeRoot(const IntTools_CArray1OfReal& t,const IntTools_CArray1OfReal& f) ; Standard_EXPORT void RemoveIdenticalRoots() ; Standard_EXPORT Standard_Boolean CheckTouch(const IntTools_CommonPrt& aCP,Standard_Real& t1,Standard_Real& t2) ; Standard_EXPORT Standard_Boolean CheckTouchVertex(const IntTools_CommonPrt& aCP,Standard_Real& t1,Standard_Real& t2) const; Standard_EXPORT Standard_Boolean CheckInterval(const Standard_Real t1,const Standard_Real t2) ; Standard_EXPORT void ComputeLineLine() ; TopoDS_Edge myEdge1; TopoDS_Edge myEdge2; Standard_Real myTol1; Standard_Real myTol2; Standard_Integer myDiscret; Standard_Real myEpsT; Standard_Real myEpsNull; Standard_Real myDeflection; BRepAdaptor_Curve myCFrom; Standard_Real myTminFrom; Standard_Real myTmaxFrom; Standard_Real myTolFrom; BRepAdaptor_Curve myCTo; Standard_Real myTminTo; Standard_Real myTmaxTo; Standard_Real myTolTo; Standard_Real myCriteria; Standard_Boolean myIsDone; Standard_Integer myErrorStatus; IntTools_SequenceOfRanges myProjectableRanges; IntTools_CArray1OfReal myFuncArray; IntTools_CArray1OfReal myArgsArray; IntTools_SequenceOfRoots mySequenceOfRoots; IntTools_SequenceOfCommonPrts mySeqOfCommonPrts; Standard_Boolean myOrder; Standard_Real myPar1; Standard_Boolean myParallel; Standard_Boolean myAllNullFlag; IntTools_Range myRange1; IntTools_Range myRange2; }; // other Inline functions and methods (like "C++: function call" methods) #endif