![]() |
Open CASCADE Technology Reference Manual 8.0.0
|
Low-level algorithm to compute intersection of the surfaces by computing the intersection of their triangulations. More...
#include <IntPolyh_MaillageAffinage.hxx>
Public Member Functions | |
| IntPolyh_MaillageAffinage (const occ::handle< Adaptor3d_Surface > &S1, const int NbSU1, const int NbSV1, const occ::handle< Adaptor3d_Surface > &S2, const int NbSU2, const int NbSV2, const int PRINT) | |
| IntPolyh_MaillageAffinage (const occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_Surface > &S2, const int PRINT) | |
| void | MakeSampling (const int SurfID, NCollection_Array1< double > &theUPars, NCollection_Array1< double > &theVPars) |
| Makes the sampling of the surface - Fills the arrays with the parametric values of the sampling points (triangulation nodes). | |
| void | FillArrayOfPnt (const int SurfID) |
| Computes points on one surface and fills an array of points; standard (default) method. | |
| void | FillArrayOfPnt (const int SurfID, const bool isShiftFwd) |
| isShiftFwd flag is added. The purpose is to define shift of points along normal to the surface in this point. The shift length represents maximal deflection of triangulation. The direction (forward or reversed regarding to normal direction) is defined by isShiftFwd flag. Compute points on one surface and fill an array of points; advanced method | |
| void | FillArrayOfPnt (const int SurfID, const NCollection_Array1< double > &Upars, const NCollection_Array1< double > &Vpars, const double *theDeflTol=nullptr) |
| Compute points on one surface and fill an array of points; If given, <theDeflTol> is the deflection tolerance of the given sampling. standard (default) method. | |
| void | FillArrayOfPnt (const int SurfID, const bool isShiftFwd, const NCollection_Array1< double > &Upars, const NCollection_Array1< double > &Vpars, const double *theDeflTol=nullptr) |
| isShiftFwd flag is added. The purpose is to define shift of points along normal to the surface in this point. The shift length represents maximal deflection of triangulation. The direction (forward or reversed regarding to normal direction) is defined by isShiftFwd flag. Compute points on one surface and fill an array of points; If given, <theDeflTol> is the deflection tolerance of the given sampling. advanced method | |
| void | FillArrayOfPnt (const int SurfID, const bool isShiftFwd, const IntPolyh_ArrayOfPointNormal &thePoints, const NCollection_Array1< double > &theUPars, const NCollection_Array1< double > &theVPars, const double theDeflTol) |
| Fills the array of points for the surface taking into account the shift. | |
| void | CommonBox () |
| Looks for the common box of the surfaces and marks the points of the surfaces inside that common box for possible intersection. | |
| void | CommonBox (const Bnd_Box &B1, const Bnd_Box &B2, double &xMin, double &yMin, double &zMin, double &xMax, double &yMax, double &zMax) |
| Compute the common box which is the intersection of the two bounding boxes, and mark the points of the two surfaces that are inside. | |
| void | FillArrayOfEdges (const int SurfID) |
| Compute edges from the array of points. | |
| void | FillArrayOfTriangles (const int SurfID) |
| Compute triangles from the array of points, and mark the triangles that use marked points by the CommonBox function. | |
| void | CommonPartRefinement () |
| Refine systematicaly all marked triangles of both surfaces. | |
| void | LocalSurfaceRefinement (const int SurfId) |
| Refine systematicaly all marked triangles of ONE surface. | |
| void | ComputeDeflections (const int SurfID) |
| Compute deflection for all triangles of one surface,and sort min and max of deflections. | |
| void | TrianglesDeflectionsRefinementBSB () |
| Refine both surfaces using BoundSortBox as rejection. The criterions used to refine a triangle are: The deflection The size of the bounding boxes (one surface may be very small compared to the other) | |
| int | TriContact (const IntPolyh_Point &P1, const IntPolyh_Point &P2, const IntPolyh_Point &P3, const IntPolyh_Point &Q1, const IntPolyh_Point &Q2, const IntPolyh_Point &Q3, double &Angle) const |
| This function checks if two triangles are in contact or not, return 1 if yes, return 0 if not. | |
| int | TriangleEdgeContact (const int TriSurfID, const int EdgeIndice, const IntPolyh_Triangle &Tri1, const IntPolyh_Triangle &Tri2, const IntPolyh_Point &P1, const IntPolyh_Point &P2, const IntPolyh_Point &P3, const IntPolyh_Point &C1, const IntPolyh_Point &C2, const IntPolyh_Point &C3, const IntPolyh_Point &Pe1, const IntPolyh_Point &Pe2, const IntPolyh_Point &E, const IntPolyh_Point &N, IntPolyh_StartPoint &SP1, IntPolyh_StartPoint &SP2) const |
| int | StartingPointsResearch (const int T1, const int T2, IntPolyh_StartPoint &SP1, IntPolyh_StartPoint &SP2) const |
| From two triangles compute intersection points. If we found more than two intersection points that means that those triangles are coplanar. | |
| int | NextStartingPointsResearch (const int T1, const int T2, const IntPolyh_StartPoint &SPInit, IntPolyh_StartPoint &SPNext) const |
| from two triangles and an intersection point I search the other point (if it exists). This function is used by StartPointChain | |
| int | TriangleCompare () |
| Analyse each couple of triangles from the two – array of triangles, to see if they are in contact, and compute the incidence. Then put couples in contact in the array of couples. | |
| int | StartPointsChain (IntPolyh_ArrayOfSectionLines &TSectionLines, IntPolyh_ArrayOfTangentZones &TTangentZones) |
| Loop on the array of couples. Compute StartPoints. Try to chain the StartPoints into SectionLines or put the point in the ArrayOfTangentZones if chaining it, is not possible. | |
| int | GetNextChainStartPoint (const IntPolyh_StartPoint &SPInit, IntPolyh_StartPoint &SPNext, IntPolyh_SectionLine &MySectionLine, IntPolyh_ArrayOfTangentZones &TTangentZones, const bool Prepend=false) |
| Mainly used by StartPointsChain(), this function try to compute the next StartPoint. | |
| const IntPolyh_ArrayOfPoints & | GetArrayOfPoints (const int SurfID) const |
| const IntPolyh_ArrayOfEdges & | GetArrayOfEdges (const int SurfID) const |
| const IntPolyh_ArrayOfTriangles & | GetArrayOfTriangles (const int SurfID) const |
| int | GetFinTE (const int SurfID) const |
| int | GetFinTT (const int SurfID) const |
| Bnd_Box | GetBox (const int SurfID) const |
| NCollection_List< IntPolyh_Couple > & | GetCouples () |
| This method returns list of couples of contact triangles. | |
| void | SetEnlargeZone (const bool EnlargeZone) |
| bool | GetEnlargeZone () const |
| double | GetMinDeflection (const int SurfID) const |
| returns FlecheMin | |
| double | GetMaxDeflection (const int SurfID) const |
| returns FlecheMax | |
Low-level algorithm to compute intersection of the surfaces by computing the intersection of their triangulations.
| IntPolyh_MaillageAffinage::IntPolyh_MaillageAffinage | ( | const occ::handle< Adaptor3d_Surface > & | S1, |
| const int | NbSU1, | ||
| const int | NbSV1, | ||
| const occ::handle< Adaptor3d_Surface > & | S2, | ||
| const int | NbSU2, | ||
| const int | NbSV2, | ||
| const int | PRINT ) |
| IntPolyh_MaillageAffinage::IntPolyh_MaillageAffinage | ( | const occ::handle< Adaptor3d_Surface > & | S1, |
| const occ::handle< Adaptor3d_Surface > & | S2, | ||
| const int | PRINT ) |
| void IntPolyh_MaillageAffinage::CommonBox | ( | ) |
Looks for the common box of the surfaces and marks the points of the surfaces inside that common box for possible intersection.
| void IntPolyh_MaillageAffinage::CommonBox | ( | const Bnd_Box & | B1, |
| const Bnd_Box & | B2, | ||
| double & | xMin, | ||
| double & | yMin, | ||
| double & | zMin, | ||
| double & | xMax, | ||
| double & | yMax, | ||
| double & | zMax ) |
Compute the common box which is the intersection of the two bounding boxes, and mark the points of the two surfaces that are inside.
| void IntPolyh_MaillageAffinage::CommonPartRefinement | ( | ) |
Refine systematicaly all marked triangles of both surfaces.
Compute deflection for all triangles of one surface,and sort min and max of deflections.
Compute edges from the array of points.
Computes points on one surface and fills an array of points; standard (default) method.
isShiftFwd flag is added. The purpose is to define shift of points along normal to the surface in this point. The shift length represents maximal deflection of triangulation. The direction (forward or reversed regarding to normal direction) is defined by isShiftFwd flag. Compute points on one surface and fill an array of points; advanced method
| void IntPolyh_MaillageAffinage::FillArrayOfPnt | ( | const int | SurfID, |
| const bool | isShiftFwd, | ||
| const IntPolyh_ArrayOfPointNormal & | thePoints, | ||
| const NCollection_Array1< double > & | theUPars, | ||
| const NCollection_Array1< double > & | theVPars, | ||
| const double | theDeflTol ) |
Fills the array of points for the surface taking into account the shift.
| void IntPolyh_MaillageAffinage::FillArrayOfPnt | ( | const int | SurfID, |
| const bool | isShiftFwd, | ||
| const NCollection_Array1< double > & | Upars, | ||
| const NCollection_Array1< double > & | Vpars, | ||
| const double * | theDeflTol = nullptr ) |
isShiftFwd flag is added. The purpose is to define shift of points along normal to the surface in this point. The shift length represents maximal deflection of triangulation. The direction (forward or reversed regarding to normal direction) is defined by isShiftFwd flag. Compute points on one surface and fill an array of points; If given, <theDeflTol> is the deflection tolerance of the given sampling. advanced method
| void IntPolyh_MaillageAffinage::FillArrayOfPnt | ( | const int | SurfID, |
| const NCollection_Array1< double > & | Upars, | ||
| const NCollection_Array1< double > & | Vpars, | ||
| const double * | theDeflTol = nullptr ) |
Compute points on one surface and fill an array of points; If given, <theDeflTol> is the deflection tolerance of the given sampling. standard (default) method.
Compute triangles from the array of points, and mark the triangles that use marked points by the CommonBox function.
| const IntPolyh_ArrayOfEdges & IntPolyh_MaillageAffinage::GetArrayOfEdges | ( | const int | SurfID | ) | const |
| const IntPolyh_ArrayOfPoints & IntPolyh_MaillageAffinage::GetArrayOfPoints | ( | const int | SurfID | ) | const |
| const IntPolyh_ArrayOfTriangles & IntPolyh_MaillageAffinage::GetArrayOfTriangles | ( | const int | SurfID | ) | const |
| NCollection_List< IntPolyh_Couple > & IntPolyh_MaillageAffinage::GetCouples | ( | ) |
This method returns list of couples of contact triangles.
| bool IntPolyh_MaillageAffinage::GetEnlargeZone | ( | ) | const |
| int IntPolyh_MaillageAffinage::GetNextChainStartPoint | ( | const IntPolyh_StartPoint & | SPInit, |
| IntPolyh_StartPoint & | SPNext, | ||
| IntPolyh_SectionLine & | MySectionLine, | ||
| IntPolyh_ArrayOfTangentZones & | TTangentZones, | ||
| const bool | Prepend = false ) |
Mainly used by StartPointsChain(), this function try to compute the next StartPoint.
Refine systematicaly all marked triangles of ONE surface.
| void IntPolyh_MaillageAffinage::MakeSampling | ( | const int | SurfID, |
| NCollection_Array1< double > & | theUPars, | ||
| NCollection_Array1< double > & | theVPars ) |
Makes the sampling of the surface - Fills the arrays with the parametric values of the sampling points (triangulation nodes).
| int IntPolyh_MaillageAffinage::NextStartingPointsResearch | ( | const int | T1, |
| const int | T2, | ||
| const IntPolyh_StartPoint & | SPInit, | ||
| IntPolyh_StartPoint & | SPNext ) const |
from two triangles and an intersection point I search the other point (if it exists). This function is used by StartPointChain
| int IntPolyh_MaillageAffinage::StartingPointsResearch | ( | const int | T1, |
| const int | T2, | ||
| IntPolyh_StartPoint & | SP1, | ||
| IntPolyh_StartPoint & | SP2 ) const |
From two triangles compute intersection points. If we found more than two intersection points that means that those triangles are coplanar.
| int IntPolyh_MaillageAffinage::StartPointsChain | ( | IntPolyh_ArrayOfSectionLines & | TSectionLines, |
| IntPolyh_ArrayOfTangentZones & | TTangentZones ) |
Loop on the array of couples. Compute StartPoints. Try to chain the StartPoints into SectionLines or put the point in the ArrayOfTangentZones if chaining it, is not possible.
| int IntPolyh_MaillageAffinage::TriangleCompare | ( | ) |
Analyse each couple of triangles from the two – array of triangles, to see if they are in contact, and compute the incidence. Then put couples in contact in the array of couples.
| int IntPolyh_MaillageAffinage::TriangleEdgeContact | ( | const int | TriSurfID, |
| const int | EdgeIndice, | ||
| const IntPolyh_Triangle & | Tri1, | ||
| const IntPolyh_Triangle & | Tri2, | ||
| const IntPolyh_Point & | P1, | ||
| const IntPolyh_Point & | P2, | ||
| const IntPolyh_Point & | P3, | ||
| const IntPolyh_Point & | C1, | ||
| const IntPolyh_Point & | C2, | ||
| const IntPolyh_Point & | C3, | ||
| const IntPolyh_Point & | Pe1, | ||
| const IntPolyh_Point & | Pe2, | ||
| const IntPolyh_Point & | E, | ||
| const IntPolyh_Point & | N, | ||
| IntPolyh_StartPoint & | SP1, | ||
| IntPolyh_StartPoint & | SP2 ) const |
| void IntPolyh_MaillageAffinage::TrianglesDeflectionsRefinementBSB | ( | ) |
Refine both surfaces using BoundSortBox as rejection. The criterions used to refine a triangle are: The deflection The size of the bounding boxes (one surface may be very small compared to the other)
| int IntPolyh_MaillageAffinage::TriContact | ( | const IntPolyh_Point & | P1, |
| const IntPolyh_Point & | P2, | ||
| const IntPolyh_Point & | P3, | ||
| const IntPolyh_Point & | Q1, | ||
| const IntPolyh_Point & | Q2, | ||
| const IntPolyh_Point & | Q3, | ||
| double & | Angle ) const |
This function checks if two triangles are in contact or not, return 1 if yes, return 0 if not.