From 913d5f60caeb315cbb630d0e37315cf384d68480 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 7 Jan 2026 11:29:57 +0100 Subject: [PATCH] EgtGeomKernel : - piccole sistemazioni per normali di vertici di Trimesh pesate su angoli. --- SurfTriMesh.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/SurfTriMesh.cpp b/SurfTriMesh.cpp index 4402b1e..2fdf8e2 100644 --- a/SurfTriMesh.cpp +++ b/SurfTriMesh.cpp @@ -852,9 +852,6 @@ SurfTriMesh::GetTempInt( int nTriaId, int& nTempInt) const bool SurfTriMesh::GetTriangleSmoothNormal( int nT, int nV, Vector3d& vtN) const { - // flag di pesatura con angolo al vertice - bool bAngWeighted = true ; - // recupero tutti i triangoli attorno al vertice bool bCirc ; INTVECTOR vT ; @@ -875,8 +872,7 @@ SurfTriMesh::GetTriangleSmoothNormal( int nT, int nV, Vector3d& vtN) const // medio le normali, finchè non incontro degli spigoli double dAngW = 1 ; - if ( bAngWeighted) - GetTriangleVertexAngle( nT, nV, dAngW) ; + GetTriangleVertexAngle( nT, nV, dAngW) ; vtN = dAngW * m_vTria[nT].vtN ; // parto dal triangolo e vado in direzione positiva int nLim = nPos ; @@ -885,9 +881,9 @@ SurfTriMesh::GetTriangleSmoothNormal( int nT, int nV, Vector3d& vtN) const i = NextIndAroundVertex( i, nTria, bCirc)) { if ( m_vTria[nT].vtN * m_vTria[vT[i]].vtN >= m_dCosSmAng) { int nK ; double dAngW = 1 ; - if ( bAngWeighted && FindVertexInTria( m_vTria[nT].nIdVert[nV], vT[i], nK)) - GetTriangleVertexAngle( vT[i], nK, dAngW) ; - vtN += dAngW * m_vTria[vT[i]].vtN ; + if ( FindVertexInTria( m_vTria[nT].nIdVert[nV], vT[i], nK) && + GetTriangleVertexAngle( vT[i], nK, dAngW)) + vtN += dAngW * m_vTria[vT[i]].vtN ; } else break ; @@ -899,9 +895,9 @@ SurfTriMesh::GetTriangleSmoothNormal( int nT, int nV, Vector3d& vtN) const i = PrevIndAroundVertex( i, nTria, bCirc)) { if ( m_vTria[nT].vtN * m_vTria[vT[i]].vtN >= m_dCosSmAng) { int nK ; double dAngW = 1 ; - if ( bAngWeighted && FindVertexInTria( m_vTria[nT].nIdVert[nV], vT[i], nK)) - GetTriangleVertexAngle( vT[i], nK, dAngW) ; - vtN += dAngW * m_vTria[vT[i]].vtN ; + if ( FindVertexInTria( m_vTria[nT].nIdVert[nV], vT[i], nK) && + GetTriangleVertexAngle( vT[i], nK, dAngW)) + vtN += dAngW * m_vTria[vT[i]].vtN ; } else break ;