From b2bd8f7afe45d223fcf294e1bdbb23f923f9a3c9 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Mon, 18 Sep 2023 10:33:50 +0200 Subject: [PATCH] EgtGeomKernel : - correzione su coordinate U e V ai vertici delle TriMesh. --- StmFromTriangleSoup.cpp | 9 +++++---- SurfBezier.cpp | 5 ++++- SurfTriMesh.h | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/StmFromTriangleSoup.cpp b/StmFromTriangleSoup.cpp index 8c55a74..87bae4e 100644 --- a/StmFromTriangleSoup.cpp +++ b/StmFromTriangleSoup.cpp @@ -76,18 +76,19 @@ StmFromTriangleSoup::AddTriangle( const Triangle3d& Tria) //---------------------------------------------------------------------------- bool -StmFromTriangleSoup::AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2) +StmFromTriangleSoup::AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2, + const double dU0, const double dV0,const double dU1, const double dV1,const double dU2, const double dV2) { // verifico inizializzazione if ( m_pSTM == nullptr) return false ; // ciclo sui tre vertici int nIdV[3] ; - if ( ( nIdV[0] = AddVertex( ptP0)) == SVT_NULL) + if ( ( nIdV[0] = AddVertex( ptP0, dU0, dV0)) == SVT_NULL) return false ; - if ( ( nIdV[1] = AddVertex( ptP1)) == SVT_NULL) + if ( ( nIdV[1] = AddVertex( ptP1, dU1, dV1)) == SVT_NULL) return false ; - if ( ( nIdV[2] = AddVertex( ptP2)) == SVT_NULL) + if ( ( nIdV[2] = AddVertex( ptP2, dU2, dV2)) == SVT_NULL) return false ; // se i vertici sono tutti diversi tra loro, inserisco il triangolo if ( nIdV[0] != nIdV[1] && nIdV[0] != nIdV[2] && nIdV[1] != nIdV[2]) { diff --git a/SurfBezier.cpp b/SurfBezier.cpp index bb2e591..ee7a99f 100644 --- a/SurfBezier.cpp +++ b/SurfBezier.cpp @@ -1535,7 +1535,10 @@ SurfBezier::GetAuxSurf( void) const } int nTria = int( vTria.size()) / 3 ; for ( int i = 0 ; i < nTria ; ++i) { - if ( ! stmSoup.AddTriangle( vPnt3d[vTria[3*i]], vPnt3d[vTria[3*i+1]], vPnt3d[vTria[3*i+2]])) + if ( ! stmSoup.AddTriangle( vPnt3d[vTria[3*i]], vPnt3d[vTria[3*i+1]], vPnt3d[vTria[3*i+2]], + vPnt[vTria[3*i]].x, vPnt[vTria[3*i]].y, + vPnt[vTria[3*i+1]].x, vPnt[vTria[3*i+1]].y, + vPnt[vTria[3*i+2]].x, vPnt[vTria[3*i+2]].y)) return nullptr ; } } diff --git a/SurfTriMesh.h b/SurfTriMesh.h index 9f8c8d1..69b8a8a 100644 --- a/SurfTriMesh.h +++ b/SurfTriMesh.h @@ -33,9 +33,9 @@ class StmVert StmVert( const Point3d& ptQ, int nIdT, int nF) : ptP( ptQ), nIdTria( nIdT), nFlag( nF), nTemp( 0), dU( -1), dV( -1) {} public : Point3d ptP ; - double dU ; // parametro riferito alle coordinate del punto nello spazio parametrico ( nSpanU x nSpanV) + double dU ; // parametro riferito alle coordinate del punto nello spazio parametrico ( nSpanU x 1000) ( nSpanV x 1000) // della sup di Bezier // -1 se non definito - double dV ; // parametro riferito alle coordinate del punto nello spazio parametrico ( nSpanU x nSpanV) + double dV ; // parametro riferito alle coordinate del punto nello spazio parametrico ( nSpanU x 1000) ( nSpanV x 1000) // della sup di Bezier // -1 se non definito int nIdTria ; int nFlag ;