Open CASCADE Technology
6.9.0
|
Provide the algorythms used in the package. More...
#include <IntPolyh_MaillageAffinage.hxx>
Public Member Functions | |
IntPolyh_MaillageAffinage (const Handle< Adaptor3d_HSurface > &S1, const Standard_Integer NbSU1, const Standard_Integer NbSV1, const Handle< Adaptor3d_HSurface > &S2, const Standard_Integer NbSU2, const Standard_Integer NbSV2, const Standard_Integer PRINT) | |
IntPolyh_MaillageAffinage (const Handle< Adaptor3d_HSurface > &S1, const Handle< Adaptor3d_HSurface > &S2, const Standard_Integer PRINT) | |
void | FillArrayOfPnt (const Standard_Integer SurfID) |
Compute points on one surface and fill an array of points; standard (default) method. More... | |
void | FillArrayOfPnt (const Standard_Integer SurfID, const Standard_Boolean 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 More... | |
void | FillArrayOfPnt (const Standard_Integer SurfID, const TColStd_Array1OfReal &Upars, const TColStd_Array1OfReal &Vpars) |
Compute points on one surface and fill an array of points; standard (default) method. More... | |
void | FillArrayOfPnt (const Standard_Integer SurfID, const Standard_Boolean isShiftFwd, const TColStd_Array1OfReal &Upars, const TColStd_Array1OfReal &Vpars) |
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 More... | |
void | CommonBox (const Bnd_Box &B1, const Bnd_Box &B2, Standard_Real &xMin, Standard_Real &yMin, Standard_Real &zMin, Standard_Real &xMax, Standard_Real &yMax, Standard_Real &zMax) |
Compute the common box witch is the intersection of the two bounding boxes, and mark the points of the two surfaces that are inside. More... | |
void | FillArrayOfEdges (const Standard_Integer SurfID) |
Compute edges from the array of points. More... | |
void | FillArrayOfTriangles (const Standard_Integer SurfID) |
Compute triangles from the array of points, and – mark the triangles that use marked points by the CommonBox function. More... | |
void | LinkEdges2Triangles () |
fill the edge fields in Triangle object for the two array of triangles. More... | |
void | CommonPartRefinement () |
Refine systematicaly all marked triangles of both surfaces. More... | |
void | LocalSurfaceRefinement (const Standard_Integer SurfId) |
Refine systematicaly all marked triangles of ONE surface. More... | |
void | ComputeDeflections (const Standard_Integer SurfID) |
Compute deflection for all triangles of one surface,and sort min and max of deflections. More... | |
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) More... | |
Standard_Integer | 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, Standard_Real &Angle) const |
This fonction Check if two triangles are in contact or no, return 1 if yes, return 0 if no. More... | |
Standard_Integer | TriangleEdgeContact (const Standard_Integer TriSurfID, const Standard_Integer EdgeIndice, 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 |
Standard_Integer | TriangleEdgeContact2 (const Standard_Integer TriSurfID, const Standard_Integer 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 |
Standard_Integer | StartingPointsResearch (const Standard_Integer T1, const Standard_Integer T2, IntPolyh_StartPoint &SP1, IntPolyh_StartPoint &SP2) const |
Standard_Integer | StartingPointsResearch2 (const Standard_Integer T1, const Standard_Integer T2, IntPolyh_StartPoint &SP1, IntPolyh_StartPoint &SP2) const |
From two triangles compute intersection points. If I found more than two intersection points that's mean that those triangle are coplanar. More... | |
Standard_Integer | NextStartingPointsResearch (const Standard_Integer T1, const Standard_Integer T2, const IntPolyh_StartPoint &SPInit, IntPolyh_StartPoint &SPNext) const |
Standard_Integer | NextStartingPointsResearch2 (const Standard_Integer T1, const Standard_Integer T2, const IntPolyh_StartPoint &SPInit, IntPolyh_StartPoint &SPNext) const |
from two triangles and an intersection point I seach the other point (if it exist). This function is used by StartPointChain More... | |
Standard_Integer | 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. More... | |
Standard_Integer | TriangleComparePSP () |
The same as TriangleCompare, plus compute the StartPoints without chaining them. More... | |
void | StartPointsCalcul () const |
From the array of couples compute all the start points and display them on the screen. More... | |
Standard_Integer | 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. More... | |
Standard_Integer | GetNextChainStartPoint (const IntPolyh_StartPoint &SPInit, IntPolyh_StartPoint &SPNext, IntPolyh_SectionLine &MySectionLine, IntPolyh_ArrayOfTangentZones &TTangentZones, const Standard_Boolean Prepend=Standard_False) |
Mainly used by StartPointsChain(), this function try to compute the next StartPoint. More... | |
const IntPolyh_ArrayOfPoints & | GetArrayOfPoints (const Standard_Integer SurfID) const |
const IntPolyh_ArrayOfEdges & | GetArrayOfEdges (const Standard_Integer SurfID) const |
const IntPolyh_ArrayOfTriangles & | GetArrayOfTriangles (const Standard_Integer SurfID) const |
Standard_Integer | GetFinTE (const Standard_Integer SurfID) const |
Standard_Integer | GetFinTT (const Standard_Integer SurfID) const |
Bnd_Box | GetBox (const Standard_Integer SurfID) const |
void | GetBoxDraw (const Standard_Integer SurfID) const |
const IntPolyh_ArrayOfStartPoints & | GetArrayOfSP () const |
IntPolyh_ArrayOfCouples & | GetArrayOfCouples () |
This method returns array of couples of contact triangles. More... | |
void | SetEnlargeZone (Standard_Boolean &EnlargeZone) |
Standard_Boolean | GetEnlargeZone () const |
Provide the algorythms used in the package.
IntPolyh_MaillageAffinage::IntPolyh_MaillageAffinage | ( | const Handle< Adaptor3d_HSurface > & | S1, |
const Standard_Integer | NbSU1, | ||
const Standard_Integer | NbSV1, | ||
const Handle< Adaptor3d_HSurface > & | S2, | ||
const Standard_Integer | NbSU2, | ||
const Standard_Integer | NbSV2, | ||
const Standard_Integer | |||
) |
IntPolyh_MaillageAffinage::IntPolyh_MaillageAffinage | ( | const Handle< Adaptor3d_HSurface > & | S1, |
const Handle< Adaptor3d_HSurface > & | S2, | ||
const Standard_Integer | |||
) |
void IntPolyh_MaillageAffinage::CommonBox | ( | const Bnd_Box & | B1, |
const Bnd_Box & | B2, | ||
Standard_Real & | xMin, | ||
Standard_Real & | yMin, | ||
Standard_Real & | zMin, | ||
Standard_Real & | xMax, | ||
Standard_Real & | yMax, | ||
Standard_Real & | zMax | ||
) |
Compute the common box witch 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.
void IntPolyh_MaillageAffinage::ComputeDeflections | ( | const Standard_Integer | SurfID | ) |
Compute deflection for all triangles of one surface,and sort min and max of deflections.
void IntPolyh_MaillageAffinage::FillArrayOfEdges | ( | const Standard_Integer | SurfID | ) |
Compute edges from the array of points.
void IntPolyh_MaillageAffinage::FillArrayOfPnt | ( | const Standard_Integer | SurfID | ) |
Compute points on one surface and fill an array of points; standard (default) method.
void IntPolyh_MaillageAffinage::FillArrayOfPnt | ( | const Standard_Integer | SurfID, |
const Standard_Boolean | 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 IntPolyh_MaillageAffinage::FillArrayOfPnt | ( | const Standard_Integer | SurfID, |
const TColStd_Array1OfReal & | Upars, | ||
const TColStd_Array1OfReal & | Vpars | ||
) |
Compute points on one surface and fill an array of points; standard (default) method.
void IntPolyh_MaillageAffinage::FillArrayOfPnt | ( | const Standard_Integer | SurfID, |
const Standard_Boolean | isShiftFwd, | ||
const TColStd_Array1OfReal & | Upars, | ||
const TColStd_Array1OfReal & | Vpars | ||
) |
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::FillArrayOfTriangles | ( | const Standard_Integer | SurfID | ) |
Compute triangles from the array of points, and – mark the triangles that use marked points by the CommonBox function.
IntPolyh_ArrayOfCouples& IntPolyh_MaillageAffinage::GetArrayOfCouples | ( | ) |
This method returns array of couples of contact triangles.
const IntPolyh_ArrayOfEdges& IntPolyh_MaillageAffinage::GetArrayOfEdges | ( | const Standard_Integer | SurfID | ) | const |
const IntPolyh_ArrayOfPoints& IntPolyh_MaillageAffinage::GetArrayOfPoints | ( | const Standard_Integer | SurfID | ) | const |
const IntPolyh_ArrayOfStartPoints& IntPolyh_MaillageAffinage::GetArrayOfSP | ( | ) | const |
const IntPolyh_ArrayOfTriangles& IntPolyh_MaillageAffinage::GetArrayOfTriangles | ( | const Standard_Integer | SurfID | ) | const |
Bnd_Box IntPolyh_MaillageAffinage::GetBox | ( | const Standard_Integer | SurfID | ) | const |
void IntPolyh_MaillageAffinage::GetBoxDraw | ( | const Standard_Integer | SurfID | ) | const |
Standard_Boolean IntPolyh_MaillageAffinage::GetEnlargeZone | ( | ) | const |
Standard_Integer IntPolyh_MaillageAffinage::GetFinTE | ( | const Standard_Integer | SurfID | ) | const |
Standard_Integer IntPolyh_MaillageAffinage::GetFinTT | ( | const Standard_Integer | SurfID | ) | const |
Standard_Integer IntPolyh_MaillageAffinage::GetNextChainStartPoint | ( | const IntPolyh_StartPoint & | SPInit, |
IntPolyh_StartPoint & | SPNext, | ||
IntPolyh_SectionLine & | MySectionLine, | ||
IntPolyh_ArrayOfTangentZones & | TTangentZones, | ||
const Standard_Boolean | Prepend = Standard_False |
||
) |
Mainly used by StartPointsChain(), this function try to compute the next StartPoint.
void IntPolyh_MaillageAffinage::LinkEdges2Triangles | ( | ) |
fill the edge fields in Triangle object for the two array of triangles.
void IntPolyh_MaillageAffinage::LocalSurfaceRefinement | ( | const Standard_Integer | SurfId | ) |
Refine systematicaly all marked triangles of ONE surface.
Standard_Integer IntPolyh_MaillageAffinage::NextStartingPointsResearch | ( | const Standard_Integer | T1, |
const Standard_Integer | T2, | ||
const IntPolyh_StartPoint & | SPInit, | ||
IntPolyh_StartPoint & | SPNext | ||
) | const |
Standard_Integer IntPolyh_MaillageAffinage::NextStartingPointsResearch2 | ( | const Standard_Integer | T1, |
const Standard_Integer | T2, | ||
const IntPolyh_StartPoint & | SPInit, | ||
IntPolyh_StartPoint & | SPNext | ||
) | const |
from two triangles and an intersection point I seach the other point (if it exist). This function is used by StartPointChain
void IntPolyh_MaillageAffinage::SetEnlargeZone | ( | Standard_Boolean & | EnlargeZone | ) |
Standard_Integer IntPolyh_MaillageAffinage::StartingPointsResearch | ( | const Standard_Integer | T1, |
const Standard_Integer | T2, | ||
IntPolyh_StartPoint & | SP1, | ||
IntPolyh_StartPoint & | SP2 | ||
) | const |
Standard_Integer IntPolyh_MaillageAffinage::StartingPointsResearch2 | ( | const Standard_Integer | T1, |
const Standard_Integer | T2, | ||
IntPolyh_StartPoint & | SP1, | ||
IntPolyh_StartPoint & | SP2 | ||
) | const |
From two triangles compute intersection points. If I found more than two intersection points that's mean that those triangle are coplanar.
void IntPolyh_MaillageAffinage::StartPointsCalcul | ( | ) | const |
From the array of couples compute all the start points and display them on the screen.
Standard_Integer 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.
Standard_Integer 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.
Standard_Integer IntPolyh_MaillageAffinage::TriangleComparePSP | ( | ) |
The same as TriangleCompare, plus compute the StartPoints without chaining them.
Standard_Integer IntPolyh_MaillageAffinage::TriangleEdgeContact | ( | const Standard_Integer | TriSurfID, |
const Standard_Integer | EdgeIndice, | ||
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 |
Standard_Integer IntPolyh_MaillageAffinage::TriangleEdgeContact2 | ( | const Standard_Integer | TriSurfID, |
const Standard_Integer | 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)
Standard_Integer 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, | ||
Standard_Real & | Angle | ||
) | const |
This fonction Check if two triangles are in contact or no, return 1 if yes, return 0 if no.