EgtGeomKernel :
- aggiunto Set di Arc con punti estremi, vtN e bulge - contenuto numero decimali in Dump - corretto Set di Frame3d basato su OCS - migliorati controlli su indici di Stm - controllo su AddTriangle di Stm per vertici coincidenti.
This commit is contained in:
+64
-57
@@ -71,7 +71,7 @@ SurfTriMesh::AddVertex( const Point3d& ptVert)
|
||||
m_OGrMgr.Reset() ;
|
||||
// inserisco il vertice
|
||||
try { m_vVert.push_back( StmVert( ptVert)) ;}
|
||||
catch(...) { return VT_NULL ;}
|
||||
catch(...) { return SVT_NULL ;}
|
||||
// ne determino l'indice
|
||||
return int( m_vVert.size() - 1) ;
|
||||
}
|
||||
@@ -94,7 +94,7 @@ SurfTriMesh::SetVertex( int nInd, const StmVert& vV)
|
||||
catch (...) { return false ; }
|
||||
// inizializzo a cancellati gli eventuali vertici intermedi
|
||||
if ( ( nNewSize - nPrevSize) > 1) {
|
||||
StmVert vEmpty( Point3d(), VT_DEL, 0) ;
|
||||
StmVert vEmpty( Point3d(), SVT_DEL, 0) ;
|
||||
for ( int i = nPrevSize ; i < nNewSize ; ++ i)
|
||||
m_vVert[i] = vEmpty ;
|
||||
}
|
||||
@@ -108,12 +108,17 @@ SurfTriMesh::SetVertex( int nInd, const StmVert& vV)
|
||||
int
|
||||
SurfTriMesh::AddTriangle( const int nIdVert[3])
|
||||
{
|
||||
// verifico che i tre indici diano diversi
|
||||
if ( nIdVert[0] == nIdVert[1] ||
|
||||
nIdVert[1] == nIdVert[2] ||
|
||||
nIdVert[2] == nIdVert[0])
|
||||
return SVT_DEL ;
|
||||
// imposto ricalcolo
|
||||
m_nStatus = TO_VERIFY ;
|
||||
m_OGrMgr.Reset() ;
|
||||
// inserisco il triangolo
|
||||
try { m_vTria.push_back( StmTria( nIdVert)) ;}
|
||||
catch(...) { return VT_NULL ;}
|
||||
catch(...) { return SVT_NULL ;}
|
||||
// ne determino l'indice
|
||||
return int( m_vTria.size() - 1) ;
|
||||
}
|
||||
@@ -137,7 +142,7 @@ SurfTriMesh::SetTriangle( int nInd, const StmTria& tT)
|
||||
// inizializzo a cancellati gli eventuali triangoli intermedi
|
||||
if ( ( nNewSize - nPrevSize) > 1) {
|
||||
StmTria tEmpty ;
|
||||
tEmpty.nIdVert[0] = VT_DEL ;
|
||||
tEmpty.nIdVert[0] = SVT_DEL ;
|
||||
for ( int i = nPrevSize ; i < nNewSize ; ++ i)
|
||||
m_vTria[i] = tEmpty ;
|
||||
}
|
||||
@@ -151,7 +156,7 @@ SurfTriMesh::SetTriangle( int nInd, const StmTria& tT)
|
||||
int
|
||||
SurfTriMesh::GetFirstVertex( Point3d& ptP) const
|
||||
{
|
||||
return GetNextVertex( VT_NULL, ptP) ;
|
||||
return GetNextVertex( SVT_NULL, ptP) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -161,10 +166,10 @@ SurfTriMesh::GetNextVertex( int nId, Point3d& ptP) const
|
||||
// cerco il primo successivo valido
|
||||
do {
|
||||
nId ++ ;
|
||||
} while ( nId < GetVertexNum() && m_vVert[nId].nIdTria == VT_DEL) ;
|
||||
} while ( nId < GetVertexNum() && m_vVert[nId].nIdTria == SVT_DEL) ;
|
||||
// se oltrepassata fine
|
||||
if ( nId >= GetVertexNum())
|
||||
return VT_NULL ;
|
||||
return SVT_NULL ;
|
||||
// recupero i dati
|
||||
ptP = m_vVert[nId].ptP ;
|
||||
// ritorno indice triangolo corrente
|
||||
@@ -175,7 +180,7 @@ SurfTriMesh::GetNextVertex( int nId, Point3d& ptP) const
|
||||
int
|
||||
SurfTriMesh::GetFirstTriangle( Triangle3d& Tria) const
|
||||
{
|
||||
return GetNextTriangle( VT_NULL, Tria) ;
|
||||
return GetNextTriangle( SVT_NULL, Tria) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -185,10 +190,10 @@ SurfTriMesh::GetNextTriangle( int nId, Triangle3d& Tria) const
|
||||
// cerco il primo successivo valido
|
||||
do {
|
||||
nId ++ ;
|
||||
} while ( nId < GetTriangleNum() && m_vTria[nId].nIdVert[0] == VT_DEL) ;
|
||||
} while ( nId < GetTriangleNum() && m_vTria[nId].nIdVert[0] == SVT_DEL) ;
|
||||
// se oltrepassata fine
|
||||
if ( nId >= GetTriangleNum())
|
||||
return VT_NULL ;
|
||||
return SVT_NULL ;
|
||||
// recupero i dati
|
||||
Tria.Set( m_vVert[m_vTria[nId].nIdVert[0]].ptP,
|
||||
m_vVert[m_vTria[nId].nIdVert[1]].ptP,
|
||||
@@ -203,7 +208,7 @@ bool
|
||||
SurfTriMesh::GetTriangleSmoothNormals( int nId, TriNormals3d& TNrms) const
|
||||
{
|
||||
// verifico esistenza del triangolo
|
||||
if ( nId >= GetTriangleNum() || m_vTria[nId].nIdVert[0] == VT_DEL)
|
||||
if ( nId >= GetTriangleNum() || m_vTria[nId].nIdVert[0] == SVT_DEL)
|
||||
return false ;
|
||||
|
||||
// recupero le normali di ciascun vertice
|
||||
@@ -321,9 +326,9 @@ SurfTriMesh::Dump( string& sOut, const char* szNewLine) const
|
||||
// se superficie aperta o chiusa
|
||||
sOut += ( m_bClosed ? "Closed" : "Open") ;
|
||||
// numero di vertici
|
||||
sOut += " NbrVert=" + ToString( GetVertexNum()) ;
|
||||
sOut += " VertNbr=" + ToString( GetVertexNum()) ;
|
||||
// numero di triangoli
|
||||
sOut += " NbrTria=" + ToString( GetTriangleNum()) ;
|
||||
sOut += " TriaNbr=" + ToString( GetTriangleNum()) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
@@ -438,10 +443,11 @@ SurfTriMesh::Validate( void)
|
||||
m_nStatus = OK ;
|
||||
for ( int i = 0 ; i < GetTriangleNum() && m_nStatus == OK ; ++ i) {
|
||||
// se triangolo non cancellato
|
||||
if ( m_vTria[i].nIdVert[0] != VT_DEL) {
|
||||
if ( m_vTria[i].nIdVert[0] != SVT_DEL) {
|
||||
for ( int j = 0 ; j < 3 && m_nStatus == OK ; ++ j) {
|
||||
if ( m_vTria[i].nIdVert[j] >= GetVertexNum() ||
|
||||
m_vVert[ m_vTria[i].nIdVert[j]].nIdTria == VT_DEL)
|
||||
if ( m_vTria[i].nIdVert[j] < 0 ||
|
||||
m_vTria[i].nIdVert[j] >= GetVertexNum() ||
|
||||
m_vVert[ m_vTria[i].nIdVert[j]].nIdTria == SVT_DEL)
|
||||
m_nStatus = ERR ;
|
||||
}
|
||||
// calcolo eventuali normale mancante
|
||||
@@ -453,9 +459,10 @@ SurfTriMesh::Validate( void)
|
||||
// Verifico che i triangoli riferiti dai vertici esistano
|
||||
for ( int i = 0 ; i < GetVertexNum() && m_nStatus == OK ; ++ i) {
|
||||
// se vertice non cancellato e con riferimento assegnato
|
||||
if ( m_vVert[i].nIdTria != VT_DEL && m_vVert[i].nIdTria != VT_NULL) {
|
||||
if ( m_vVert[i].nIdTria >= GetTriangleNum() ||
|
||||
m_vTria[ m_vVert[i].nIdTria].nIdVert[0] == VT_DEL)
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL && m_vVert[i].nIdTria != SVT_NULL) {
|
||||
if ( m_vVert[i].nIdTria < SVT_DEL ||
|
||||
m_vVert[i].nIdTria >= GetTriangleNum() ||
|
||||
m_vTria[ m_vVert[i].nIdTria].nIdVert[0] == SVT_DEL)
|
||||
m_nStatus = ERR ;
|
||||
}
|
||||
}
|
||||
@@ -488,7 +495,7 @@ SurfTriMesh::GetAllTriaAroundVertex( int nV, INTVECTOR& vT) const
|
||||
|
||||
// recupero il triangolo puntato dal vertice
|
||||
int nT = m_vVert[nV].nIdTria ;
|
||||
if ( nT == VT_NULL)
|
||||
if ( nT == SVT_NULL)
|
||||
return 0 ;
|
||||
vT.push_back( nT) ;
|
||||
|
||||
@@ -499,14 +506,14 @@ SurfTriMesh::GetAllTriaAroundVertex( int nV, INTVECTOR& vT) const
|
||||
if ( FindVertexInTria( nV, nTa, k))
|
||||
nTa = m_vTria[nTa].nIdAdjac[Prev(k)] ;
|
||||
else
|
||||
nTa = VT_NULL ;
|
||||
nTa = SVT_NULL ;
|
||||
// per evitare cicli infiniti dovuti a triangoli invertiti
|
||||
if ( vT.size() >= 2 && nTa == vT[vT.size()-2])
|
||||
break ;
|
||||
// se valido
|
||||
if ( nTa != nT && nTa != VT_NULL)
|
||||
if ( nTa != nT && nTa != SVT_NULL)
|
||||
vT.push_back( nTa) ;
|
||||
} while ( nTa != nT && nTa != VT_NULL && vT.size() < MAX_VT_SIZE) ;
|
||||
} while ( nTa != nT && nTa != SVT_NULL && vT.size() < MAX_VT_SIZE) ;
|
||||
|
||||
// se sono ritornato al triangolo di partenza ho fatto un giro e concluso la ricerca
|
||||
if ( nTa == nT)
|
||||
@@ -518,14 +525,14 @@ SurfTriMesh::GetAllTriaAroundVertex( int nV, INTVECTOR& vT) const
|
||||
if ( FindVertexInTria( nV, nTa, k))
|
||||
nTa = m_vTria[nTa].nIdAdjac[k] ;
|
||||
else
|
||||
nTa = VT_NULL ;
|
||||
nTa = SVT_NULL ;
|
||||
// per evitare cicli infiniti dovuti a triangoli invertiti
|
||||
if ( vT.size() >= 2 && nTa == vT[vT.size()-2])
|
||||
break ;
|
||||
// se valido
|
||||
if ( nTa != nT && nTa != VT_NULL)
|
||||
if ( nTa != nT && nTa != SVT_NULL)
|
||||
vT.insert( vT.begin(), nTa) ;
|
||||
} while ( nTa != nT && nTa != VT_NULL && vT.size() < MAX_VT_SIZE) ;
|
||||
} while ( nTa != nT && nTa != SVT_NULL && vT.size() < MAX_VT_SIZE) ;
|
||||
|
||||
return int( vT.size()) ;
|
||||
}
|
||||
@@ -537,9 +544,9 @@ SurfTriMesh::AdjustAdjacencies( void)
|
||||
// sistemo i puntatori dai vertici ai triangoli
|
||||
for ( int i = 0 ; i < GetTriangleNum() ; ++ i) {
|
||||
// se triangolo non cancellato
|
||||
if ( m_vTria[i].nIdVert[0] != VT_DEL) {
|
||||
if ( m_vTria[i].nIdVert[0] != SVT_DEL) {
|
||||
for ( int j = 0 ; j < 3 ; ++ j) {
|
||||
if ( m_vVert[ m_vTria[i].nIdVert[j]].nIdTria == VT_NULL)
|
||||
if ( m_vVert[ m_vTria[i].nIdVert[j]].nIdTria == SVT_NULL)
|
||||
m_vVert[ m_vTria[i].nIdVert[j]].nIdTria = i ;
|
||||
}
|
||||
}
|
||||
@@ -551,10 +558,10 @@ SurfTriMesh::AdjustAdjacencies( void)
|
||||
bModif = false ;
|
||||
for ( int i = 0 ; i < GetTriangleNum() ; ++ i) {
|
||||
// se triangolo non cancellato
|
||||
if ( m_vTria[i].nIdVert[0] != VT_DEL) {
|
||||
if ( m_vTria[i].nIdVert[0] != SVT_DEL) {
|
||||
for ( int j = 0 ; j < 3 ; ++ j) {
|
||||
// se adiacenza non risolta
|
||||
if ( m_vTria[i].nIdAdjac[j] == VT_NULL) {
|
||||
if ( m_vTria[i].nIdAdjac[j] == SVT_NULL) {
|
||||
// vertici all'estremo dello half-edge di indice j
|
||||
int nVi = m_vTria[i].nIdVert[j] ;
|
||||
int nVf = m_vTria[i].nIdVert[Next(j)] ;
|
||||
@@ -623,7 +630,7 @@ SurfTriMesh::AdjustOrientations( int nLev, bool& bSomeWrong)
|
||||
// ciclo sui lati del triangolo
|
||||
for ( int j = 0 ; j < 3 ; ++ j) {
|
||||
// se non c'è adiacenza
|
||||
if ( m_vTria[i].nIdAdjac[j] == VT_NULL)
|
||||
if ( m_vTria[i].nIdAdjac[j] == SVT_NULL)
|
||||
++ nNull ;
|
||||
// la verifico
|
||||
else {
|
||||
@@ -658,9 +665,9 @@ SurfTriMesh::TestClosure( void)
|
||||
// ciclo sui triangoli
|
||||
bool bClosed = true ;
|
||||
for ( int i = 0 ; i < GetTriangleNum() ; ++ i) {
|
||||
if ( m_vTria[i].nIdAdjac[0] == VT_NULL ||
|
||||
m_vTria[i].nIdAdjac[1] == VT_NULL ||
|
||||
m_vTria[i].nIdAdjac[2] == VT_NULL)
|
||||
if ( m_vTria[i].nIdAdjac[0] == SVT_NULL ||
|
||||
m_vTria[i].nIdAdjac[1] == SVT_NULL ||
|
||||
m_vTria[i].nIdAdjac[2] == SVT_NULL)
|
||||
bClosed = false ;
|
||||
}
|
||||
// aggiorno la chiusura della superficie
|
||||
@@ -712,7 +719,7 @@ SurfTriMesh::CreateByTriangulation( const PolyLine& PL)
|
||||
|
||||
// inserisco i vertici nella superficie
|
||||
for ( int i = 0 ; i < int( vPnt.size()) ; ++ i) {
|
||||
if ( AddVertex( vPnt[i]) == VT_NULL)
|
||||
if ( AddVertex( vPnt[i]) == SVT_NULL)
|
||||
return false ;
|
||||
}
|
||||
|
||||
@@ -722,7 +729,7 @@ SurfTriMesh::CreateByTriangulation( const PolyLine& PL)
|
||||
vV[0] = vTria[3*i] ;
|
||||
vV[1] = vTria[3*i+1] ;
|
||||
vV[2] = vTria[3*i+2] ;
|
||||
if ( AddTriangle( vV) == VT_NULL)
|
||||
if ( AddTriangle( vV) == SVT_NULL)
|
||||
return false ;
|
||||
}
|
||||
|
||||
@@ -753,7 +760,7 @@ SurfTriMesh::CreateByExtrusion( const PolyLine& PL, const Vector3d& vtExtr)
|
||||
if ( ! PL.GetFirstPoint( ptP))
|
||||
return false ;
|
||||
++ nP ;
|
||||
if ( AddVertex( ptP) == VT_NULL || AddVertex( ptP + vtExtr) == VT_NULL)
|
||||
if ( AddVertex( ptP) == SVT_NULL || AddVertex( ptP + vtExtr) == SVT_NULL)
|
||||
return false ;
|
||||
nV += 2 ;
|
||||
// ciclo sui punti della polilinea (per inserire vertice e suo estruso + 2 triangoli per ogni punto)
|
||||
@@ -764,16 +771,16 @@ SurfTriMesh::CreateByExtrusion( const PolyLine& PL, const Vector3d& vtExtr)
|
||||
// se polilinea aperta o non è l'ultimo punto
|
||||
if ( ! bClosed || nP < nPointNbr) {
|
||||
// aggiungo due nuovi vertici
|
||||
if ( AddVertex( ptP) == VT_NULL || AddVertex( ptP + vtExtr) == VT_NULL)
|
||||
if ( AddVertex( ptP) == SVT_NULL || AddVertex( ptP + vtExtr) == SVT_NULL)
|
||||
return false ;
|
||||
nV += 2 ;
|
||||
// aggiungo triangolo in basso a sinistra
|
||||
nIdV[0] = nV - 3 ; nIdV[1] = nV - 1 ; nIdV[2] = nV - 2 ;
|
||||
if ( AddTriangle( nIdV) == VT_NULL)
|
||||
if ( AddTriangle( nIdV) == SVT_NULL)
|
||||
return false ;
|
||||
// aggiungo triangolo in alto a destra
|
||||
nIdV[0] = nV - 2 ; nIdV[1] = nV - 1 ; nIdV[2] = nV ;
|
||||
if ( AddTriangle( nIdV) == VT_NULL)
|
||||
if ( AddTriangle( nIdV) == SVT_NULL)
|
||||
return false ;
|
||||
}
|
||||
// altrimenti ultimo punto di polilinea chiusa
|
||||
@@ -781,11 +788,11 @@ SurfTriMesh::CreateByExtrusion( const PolyLine& PL, const Vector3d& vtExtr)
|
||||
// non devo aggiungere i vertici, perchè coincidono con quelli iniziali
|
||||
// aggiungo triangolo in basso a sinistra
|
||||
nIdV[0] = nV - 1 ; nIdV[1] = 0 ; nIdV[2] = nV ;
|
||||
if ( AddTriangle( nIdV) == VT_NULL)
|
||||
if ( AddTriangle( nIdV) == SVT_NULL)
|
||||
return false ;
|
||||
// aggiungo triangolo in alto a destra
|
||||
nIdV[0] = nV ; nIdV[1] = 0 ; nIdV[2] = 1 ;
|
||||
if ( AddTriangle( nIdV) == VT_NULL)
|
||||
if ( AddTriangle( nIdV) == SVT_NULL)
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
@@ -804,7 +811,7 @@ SurfTriMesh::GetLocalBBox( BBox3d& b3Loc) const
|
||||
// assegno il box in locale
|
||||
b3Loc.Reset() ;
|
||||
for ( int i = 0 ; i < GetVertexNum() ; ++ i) {
|
||||
if ( m_vVert[i].nIdTria != VT_DEL)
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL)
|
||||
b3Loc.Add( m_vVert[i].ptP) ;
|
||||
}
|
||||
return true ;
|
||||
@@ -823,7 +830,7 @@ SurfTriMesh::GetBBox( const Frame3d& frRef, BBox3d& b3Ref) const
|
||||
// assegno il box nel riferimento
|
||||
b3Ref.Reset() ;
|
||||
for ( int i = 0 ; i < GetVertexNum() ; ++ i) {
|
||||
if ( m_vVert[i].nIdTria != VT_DEL) {
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL) {
|
||||
Point3d ptTemp = m_vVert[i].ptP ;
|
||||
ptTemp.ToGlob( frRef) ;
|
||||
b3Ref.Add( ptTemp) ;
|
||||
@@ -846,7 +853,7 @@ SurfTriMesh::Translate( const Vector3d& vtMove)
|
||||
|
||||
// traslo i vertici
|
||||
for ( int i = 0 ; i < GetVertexNum() ; ++ i) {
|
||||
if ( m_vVert[i].nIdTria != VT_DEL)
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL)
|
||||
m_vVert[i].ptP.Translate( vtMove) ;
|
||||
}
|
||||
|
||||
@@ -870,13 +877,13 @@ SurfTriMesh::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng,
|
||||
|
||||
// ruoto i vertici
|
||||
for ( int i = 0 ; i < GetVertexNum() ; ++ i) {
|
||||
if ( m_vVert[i].nIdTria != VT_DEL)
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL)
|
||||
m_vVert[i].ptP.Rotate( ptAx, vtAx, dCosAng, dSinAng) ;
|
||||
}
|
||||
|
||||
// ruoto le normali delle facce
|
||||
for ( int i = 0 ; i < GetTriangleNum() ; ++ i) {
|
||||
if ( m_vTria[i].nIdVert[0] != VT_DEL)
|
||||
if ( m_vTria[i].nIdVert[0] != SVT_DEL)
|
||||
m_vTria[i].vtN.Rotate( vtAx, dCosAng, dSinAng) ;
|
||||
}
|
||||
|
||||
@@ -905,13 +912,13 @@ SurfTriMesh::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double
|
||||
|
||||
// scalo i vertici
|
||||
for ( int i = 0 ; i < GetVertexNum() ; ++ i) {
|
||||
if ( m_vVert[i].nIdTria != VT_DEL)
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL)
|
||||
m_vVert[i].ptP.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) ;
|
||||
}
|
||||
|
||||
// aggiorno le facce
|
||||
for ( int i = 0 ; i < GetTriangleNum() ; ++ i) {
|
||||
if ( m_vTria[i].nIdVert[0] != VT_DEL) {
|
||||
if ( m_vTria[i].nIdVert[0] != SVT_DEL) {
|
||||
// se c'è mirror, devo invertire la faccia
|
||||
if ( bMirror && ! InvertTriangle( i))
|
||||
return false ;
|
||||
@@ -929,7 +936,7 @@ bool
|
||||
SurfTriMesh::InvertTriangle( int nT)
|
||||
{
|
||||
// controllo validità triangolo
|
||||
if ( m_vTria[nT].nIdVert[0] == VT_DEL)
|
||||
if ( m_vTria[nT].nIdVert[0] == SVT_DEL)
|
||||
return false ;
|
||||
// scambio di due vertici
|
||||
swap( m_vTria[nT].nIdVert[1], m_vTria[nT].nIdVert[2]) ;
|
||||
@@ -945,15 +952,15 @@ bool
|
||||
SurfTriMesh::CalcTriangleNormal( int nT)
|
||||
{
|
||||
// controllo validità triangolo
|
||||
if ( m_vTria[nT].nIdVert[0] == VT_DEL)
|
||||
if ( m_vTria[nT].nIdVert[0] == SVT_DEL)
|
||||
return false ;
|
||||
// controllo validità vertici riferiti dal triangolo
|
||||
if ( m_vTria[nT].nIdVert[0] >= GetVertexNum() ||
|
||||
m_vVert[m_vTria[nT].nIdVert[0]].nIdTria == VT_DEL ||
|
||||
m_vVert[m_vTria[nT].nIdVert[0]].nIdTria == SVT_DEL ||
|
||||
m_vTria[nT].nIdVert[1] >= GetVertexNum() ||
|
||||
m_vVert[m_vTria[nT].nIdVert[1]].nIdTria == VT_DEL ||
|
||||
m_vVert[m_vTria[nT].nIdVert[1]].nIdTria == SVT_DEL ||
|
||||
m_vTria[nT].nIdVert[2] >= GetVertexNum() ||
|
||||
m_vVert[m_vTria[nT].nIdVert[2]].nIdTria == VT_DEL)
|
||||
m_vVert[m_vTria[nT].nIdVert[2]].nIdTria == SVT_DEL)
|
||||
return false ;
|
||||
// calcolo vettori come due lati consecutivi del triangolo
|
||||
Vector3d vtV1 = m_vVert[m_vTria[nT].nIdVert[1]].ptP - m_vVert[m_vTria[nT].nIdVert[0]].ptP ;
|
||||
@@ -987,7 +994,7 @@ SurfTriMesh::Mirror( const Point3d& ptOn, const Vector3d& vtNorm)
|
||||
|
||||
// inverto le facce
|
||||
for ( int i = 0 ; i < GetTriangleNum() ; ++ i) {
|
||||
if ( m_vTria[i].nIdVert[0] != VT_DEL) {
|
||||
if ( m_vTria[i].nIdVert[0] != SVT_DEL) {
|
||||
// inverto la faccia
|
||||
if ( ! InvertTriangle( i))
|
||||
return false ;
|
||||
@@ -1014,7 +1021,7 @@ SurfTriMesh::ToGlob( const Frame3d& frRef)
|
||||
|
||||
// trasformo i vertici
|
||||
for ( int i = 0 ; i < GetVertexNum() ; ++ i) {
|
||||
if ( m_vVert[i].nIdTria != VT_DEL)
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL)
|
||||
m_vVert[i].ptP.ToGlob( frRef) ;
|
||||
}
|
||||
|
||||
@@ -1038,7 +1045,7 @@ SurfTriMesh::ToLoc( const Frame3d& frRef)
|
||||
|
||||
// trasformo i vertici
|
||||
for ( int i = 0 ; i < GetVertexNum() ; ++ i) {
|
||||
if ( m_vVert[i].nIdTria != VT_DEL)
|
||||
if ( m_vVert[i].nIdTria != SVT_DEL)
|
||||
m_vVert[i].ptP.ToLoc( frRef) ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user