EgtGeomKernel :
- miglioria a Zmap per colore lavorazione.
This commit is contained in:
@@ -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) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user