EgtGeomKernel :

- miglioria a Zmap per colore lavorazione.
This commit is contained in:
Dario Sassi
2018-01-30 12:12:05 +00:00
parent e258986152
commit 659949dafc
+37
View File
@@ -2715,6 +2715,43 @@ VolZmap::FlipEdgesII( TriHolder& TriHold) const
bModified = true ;
break ;
}
else {
// In questo caso i due triangoli sono necessariamente su un piano,
// quindi hanno normali concordi. Per ognuno dei due cerco nei rispettivi
// ventagli un triangolo con normale concorde con colore definito. Assegno
// tale colore ai triangoli.
int nPrv1 = ( nTri1 != 0 ? nTri1 : int( TriHold[n1].vCompoTria[nCompo1].size())) - 1 ;
int nNxt1 = ( nTri1 != TriHold[n1].vCompoTria[nCompo1].size() - 1 ? nTri1 + 1 : 0) ;
int nPrv2 = ( nTri2 != 0 ? nTri2 : int( TriHold[n2].vCompoTria[nCompo2].size())) - 1 ;
int nNxt2 = ( nTri2 != TriHold[n2].vCompoTria[nCompo2].size() - 1 ? nTri2 + 1 : 0) ;
double dDotP1 = TriHold[n1].vCompoTria[nCompo1][nTri1].GetN() *
TriHold[n1].vCompoTria[nCompo1][nPrv1].GetN() ;
double dDotN1 = TriHold[n1].vCompoTria[nCompo1][nTri1].GetN() *
TriHold[n1].vCompoTria[nCompo1][nNxt1].GetN() ;
int nAdjT1 = - 1 ;
if ( dDotP1 > 0.5 || dDotN1 > 0.5)
nAdjT1 = ( dDotP1 > dDotN1 ? nPrv1 : nNxt1) ;
double dDotP2 = TriHold[n2].vCompoTria[nCompo2][nTri2].GetN() *
TriHold[n2].vCompoTria[nCompo2][nPrv2].GetN() ;
double dDotN2 = TriHold[n2].vCompoTria[nCompo2][nTri2].GetN() *
TriHold[n2].vCompoTria[nCompo2][nNxt2].GetN() ;
int nAdjT2 = - 1 ;
if ( dDotP2 > 0.5 || dDotN2 > 0.5)
nAdjT2 = ( dDotP2 > dDotN2 ? nPrv2 : nNxt2) ;
if ( nAdjT1 != - 1) {
int nCol = TriHold[n1].vCompoTria[nCompo1][nAdjT1].GetGrade() ;
TriHold[n1].vCompoTria[nCompo1][nTri1].SetGrade( nCol) ;
TriHold[n2].vCompoTria[nCompo2][nTri2].SetGrade( nCol) ;
}
else if ( nAdjT2 != - 1) {
int nCol = TriHold[n2].vCompoTria[nCompo2][nAdjT2].GetGrade() ;
TriHold[n1].vCompoTria[nCompo1][nTri1].SetGrade( nCol) ;
TriHold[n2].vCompoTria[nCompo2][nTri2].SetGrade( nCol) ;
}
}
}
}
}