EgtGeomKernel :
- piccole sistemazioni per normali di vertici di Trimesh pesate su angoli.
This commit is contained in:
+7
-11
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user