EgtGeomKernel :

- piccole sistemazioni per normali di vertici di Trimesh pesate su angoli.
This commit is contained in:
Dario Sassi
2026-01-07 11:29:57 +01:00
parent 3dddbdf5cd
commit 913d5f60ca
+7 -11
View File
@@ -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 ;