Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Public Member Functions
IntPolyh_MaillageAffinage Class Reference

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_ArrayOfPointsGetArrayOfPoints (const int SurfID) const
 
const IntPolyh_ArrayOfEdgesGetArrayOfEdges (const int SurfID) const
 
const IntPolyh_ArrayOfTrianglesGetArrayOfTriangles (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
 

Detailed Description

Low-level algorithm to compute intersection of the surfaces by computing the intersection of their triangulations.

Constructor & Destructor Documentation

◆ IntPolyh_MaillageAffinage() [1/2]

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() [2/2]

IntPolyh_MaillageAffinage::IntPolyh_MaillageAffinage ( const occ::handle< Adaptor3d_Surface > & S1,
const occ::handle< Adaptor3d_Surface > & S2,
const int PRINT )

Member Function Documentation

◆ CommonBox() [1/2]

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.

◆ CommonBox() [2/2]

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.

◆ CommonPartRefinement()

void IntPolyh_MaillageAffinage::CommonPartRefinement ( )

Refine systematicaly all marked triangles of both surfaces.

◆ ComputeDeflections()

void IntPolyh_MaillageAffinage::ComputeDeflections ( const int SurfID)

Compute deflection for all triangles of one surface,and sort min and max of deflections.

◆ FillArrayOfEdges()

void IntPolyh_MaillageAffinage::FillArrayOfEdges ( const int SurfID)

Compute edges from the array of points.

◆ FillArrayOfPnt() [1/5]

void IntPolyh_MaillageAffinage::FillArrayOfPnt ( const int SurfID)

Computes points on one surface and fills an array of points; standard (default) method.

◆ FillArrayOfPnt() [2/5]

void IntPolyh_MaillageAffinage::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

◆ FillArrayOfPnt() [3/5]

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.

◆ FillArrayOfPnt() [4/5]

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

◆ FillArrayOfPnt() [5/5]

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.

◆ FillArrayOfTriangles()

void IntPolyh_MaillageAffinage::FillArrayOfTriangles ( const int SurfID)

Compute triangles from the array of points, and mark the triangles that use marked points by the CommonBox function.

◆ GetArrayOfEdges()

const IntPolyh_ArrayOfEdges & IntPolyh_MaillageAffinage::GetArrayOfEdges ( const int SurfID) const

◆ GetArrayOfPoints()

const IntPolyh_ArrayOfPoints & IntPolyh_MaillageAffinage::GetArrayOfPoints ( const int SurfID) const

◆ GetArrayOfTriangles()

const IntPolyh_ArrayOfTriangles & IntPolyh_MaillageAffinage::GetArrayOfTriangles ( const int SurfID) const

◆ GetBox()

Bnd_Box IntPolyh_MaillageAffinage::GetBox ( const int SurfID) const

◆ GetCouples()

NCollection_List< IntPolyh_Couple > & IntPolyh_MaillageAffinage::GetCouples ( )

This method returns list of couples of contact triangles.

◆ GetEnlargeZone()

bool IntPolyh_MaillageAffinage::GetEnlargeZone ( ) const

◆ GetFinTE()

int IntPolyh_MaillageAffinage::GetFinTE ( const int SurfID) const

◆ GetFinTT()

int IntPolyh_MaillageAffinage::GetFinTT ( const int SurfID) const

◆ GetMaxDeflection()

double IntPolyh_MaillageAffinage::GetMaxDeflection ( const int SurfID) const

returns FlecheMax

◆ GetMinDeflection()

double IntPolyh_MaillageAffinage::GetMinDeflection ( const int SurfID) const

returns FlecheMin

◆ GetNextChainStartPoint()

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.

◆ LocalSurfaceRefinement()

void IntPolyh_MaillageAffinage::LocalSurfaceRefinement ( const int SurfId)

Refine systematicaly all marked triangles of ONE surface.

◆ MakeSampling()

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).

◆ NextStartingPointsResearch()

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

◆ SetEnlargeZone()

void IntPolyh_MaillageAffinage::SetEnlargeZone ( const bool EnlargeZone)

◆ StartingPointsResearch()

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.

◆ StartPointsChain()

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.

◆ TriangleCompare()

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.

◆ TriangleEdgeContact()

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

◆ TrianglesDeflectionsRefinementBSB()

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)

◆ TriContact()

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.


The documentation for this class was generated from the following file: