EgtGeomKernel :

- sistemati vari bug nella creazione della superficie trimesh trimmata
si una superficie di bezier
Problemi noti :
- sui casi con un tree reale genero dei poligoni sbagliati per le celle
This commit is contained in:
Daniele Bariletti
2023-06-06 10:40:03 +02:00
parent 71ac2fde82
commit 579bc5492c
3 changed files with 553 additions and 517 deletions
+1
View File
@@ -1500,6 +1500,7 @@ SurfBezier::GetAuxSurf( void) const
// costruttore della superficie
Tree Tree( this, true) ;
//Tree.BuildTree_test() ;
Tree.BuildTree() ;
vector<POLYLINEVECTOR> vvPL ;
Tree.GetPolygons( vvPL) ;
+549 -516
View File
File diff suppressed because it is too large Load Diff
+3 -1
View File
@@ -99,6 +99,7 @@ public :
void SetSurf( const SurfBezier* pSrfBz, bool bSplitPatches = true) ;
bool BuildTree( double dLinTol = LIN_TOL_STD, double dSideMin = 5, double dSideMax = INFINITO) ; // dSideMax è il massimo per la dimensione maggiore di un triangolo della trimesh
// dSideMin è lunghezza minima del lato di una cella nello spazio reale
bool BuildTree_test( double dLinTol = LIN_TOL_STD, double dSideMin = 5, double dSideMax = INFINITO) ;
bool GetPolygons( std::vector<POLYLINEVECTOR>& vPolygons) ;
bool GetPolygonsBasic( POLYLINEVECTOR& vPolygons) ; // restituisce il poligono corrispondente ad ogni cella foglia dell'albero
// ad ogni poligono sono stati aggiunti tutti i vertici dei vicini posizionati sui suoi lati
@@ -126,12 +127,13 @@ private :
bool CheckIfBefore( PolyLine& pl, int nEdge) const ;
bool CheckIfBefore( Inters& inA) const ;
bool CheckIfBefore( int& nEdge1, Point3d& ptP1, int& nEdge2, Point3d& ptP2) const ;
bool CheckIfAfter( PolyLine& pl, Point3d& ptNextStart, int nEdge) const ;
bool CheckIfAfter( PolyLine& pl, Point3d& ptNextStart, int nEdge, bool bSameEdge = true) const ;
bool AreSameEdge( int nEdge1, int nEdge2) const ;
bool AddVertex( int nId, std::vector<PNTVECTOR>& vEdgeVertex, PolyLine& plTrimmedPoly, int& c, Point3d& ptToAdd) const ;
//bool SetRightEdgeIn( int nId, std::vector<PNTVECTOR>& vEdgeVertex, PolyLine& plTrimmedPoly) ;
bool SetRightEdgeIn( int nId) ;
bool CategorizeCell( int& nId) ;
bool CheckIfBetween( Inters& intA, Inters& intB) const ;
private :
const SurfBezier* m_pSrfBz ; // superficie di bezier