EgtGeomKernel 1.8k3 :
- miglioramenti a Zmap.
This commit is contained in:
+33
-38
@@ -58,8 +58,8 @@ VolZmap::Clear( void)
|
||||
m_nMapNum = 0 ;
|
||||
m_nNumBlock = 0 ;
|
||||
m_nConnectedCompoCount = 0 ;
|
||||
for ( int i = 0 ; i < N_MAPS ; ++ i) {
|
||||
m_MapFrame[i].Reset() ;
|
||||
m_MapFrame.Reset() ;
|
||||
for ( int i = 0 ; i < N_MAPS ; ++ i) {
|
||||
m_nNx[i] = 0 ;
|
||||
m_nNy[i] = 0 ;
|
||||
m_nDim[i] = 0 ;
|
||||
@@ -119,11 +119,11 @@ VolZmap::CopyFrom( const VolZmap& vzmSrc)
|
||||
m_nFracLin[1] = vzmSrc.m_nFracLin[1] ;
|
||||
m_nFracLin[2] = vzmSrc.m_nFracLin[2] ;
|
||||
m_nConnectedCompoCount = vzmSrc.m_nConnectedCompoCount ;
|
||||
|
||||
m_MapFrame = vzmSrc.m_MapFrame ;
|
||||
|
||||
for ( int i = 0 ; i < int ( m_nMapNum) ; ++ i) {
|
||||
|
||||
m_MapFrame[i] = vzmSrc.m_MapFrame[i] ;
|
||||
|
||||
m_nNx[i] = vzmSrc.m_nNx[i] ;
|
||||
m_nNy[i] = vzmSrc.m_nNy[i] ;
|
||||
m_nDim[i] = vzmSrc.m_nDim[i] ;
|
||||
@@ -228,10 +228,11 @@ VolZmap::Save( NgeWriter& ngeOut) const
|
||||
// passo di campionamento (distanza tra spilloni)
|
||||
if ( ! ngeOut.WriteDouble( m_dStep, ";", true))
|
||||
return false ;
|
||||
// per ogni mappa : sistema di riferimento, numero di passi in X e Y intrinseci
|
||||
for ( unsigned int i = 0 ; i < m_nMapNum ; ++ i) {
|
||||
if ( ! ngeOut.WriteFrame( m_MapFrame[i], ";", true))
|
||||
return false ;
|
||||
// sistema di riferimento
|
||||
if ( ! ngeOut.WriteFrame( m_MapFrame, ";", true))
|
||||
return false ;
|
||||
// per ogni mappa : numero di passi in X e Y e quote z estremali
|
||||
for ( unsigned int i = 0 ; i < m_nMapNum ; ++ i) {
|
||||
if ( ! ngeOut.WriteInt( m_nNx[i], ",", false))
|
||||
return false ;
|
||||
if ( ! ngeOut.WriteInt( m_nNy[i], ",", false))
|
||||
@@ -304,10 +305,11 @@ VolZmap::Load( NgeReader& ngeIn)
|
||||
// passo di campionamento (distanza tra spilloni)
|
||||
if ( ! ngeIn.ReadDouble( m_dStep, ";", true))
|
||||
return false ;
|
||||
// per ogni mappa : sistema di riferimento, numero di passi in X e Y intrinseci
|
||||
for ( unsigned int i = 0 ; i < m_nMapNum ; ++ i) {
|
||||
if ( ! ngeIn.ReadFrame( m_MapFrame[i], ";", true))
|
||||
// sistema di riferimento
|
||||
if ( ! ngeIn.ReadFrame( m_MapFrame, ";", true))
|
||||
return false ;
|
||||
// per ogni mappa : numero di passi in X e Y e quote z estremali
|
||||
for ( unsigned int i = 0 ; i < m_nMapNum ; ++ i) {
|
||||
if ( ! ngeIn.ReadInt( m_nNx[i], ",", false))
|
||||
return false ;
|
||||
if ( ! ngeIn.ReadInt( m_nNy[i], ",", false))
|
||||
@@ -385,23 +387,23 @@ VolZmap::GetLocalBBox( BBox3d& b3Loc, int nFlag) const
|
||||
if ( ( nFlag & BBF_EXACT) == 0) {
|
||||
b3Loc.Add( ORIG) ;
|
||||
b3Loc.Add( Point3d( m_nNx[0] * m_dStep, m_nNy[0] * m_dStep, m_dMaxZ[0])) ;
|
||||
b3Loc.ToGlob( m_MapFrame[0]) ;
|
||||
b3Loc.ToGlob( m_MapFrame) ;
|
||||
return true ;
|
||||
}
|
||||
// calcolo preciso
|
||||
// ciclo sui dexel (punti in basso con ciclo aggiunto per punti in alto di ultima riga)
|
||||
double dY = 0 ;
|
||||
for ( size_t j = 0 ; j <= m_nNy[0] ; ++ j) {
|
||||
size_t jc = ( ( j != m_nNy[0]) ? j : m_nNy[0] -1) ;
|
||||
size_t jc = ( ( j != m_nNy[0]) ? j : m_nNy[0] - 1) ;
|
||||
double dX = 0 ;
|
||||
// punto a sinistra di ogni dexel (aggiungo un ciclo per fare punto a destra di ultimo)
|
||||
for ( size_t i = 0 ; i <= m_nNx[0] ; ++ i) {
|
||||
size_t ic = ( ( i != m_nNx[0]) ? i : m_nNx[0] -1) ;
|
||||
size_t ic = ( ( i != m_nNx[0]) ? i : m_nNx[0] - 1) ;
|
||||
size_t nPos = ic + jc * m_nNx[0] ;
|
||||
if ( m_Values[0][nPos].size() > 0) {
|
||||
Point3d ptP = m_MapFrame[0].Orig() + dX * m_MapFrame[0].VersX() + dY * m_MapFrame[0].VersY() ;
|
||||
b3Loc.Add( ptP + m_Values[0][nPos][0].dMin * m_MapFrame[0].VersZ()) ;
|
||||
b3Loc.Add( ptP + m_Values[0][nPos][m_Values[0][nPos].size()-1].dMax * m_MapFrame[0].VersZ()) ;
|
||||
Point3d ptP = m_MapFrame.Orig() + dX * m_MapFrame.VersX() + dY * m_MapFrame.VersY() ;
|
||||
b3Loc.Add( ptP + m_Values[0][nPos][0].dMin * m_MapFrame.VersZ()) ;
|
||||
b3Loc.Add( ptP + m_Values[0][nPos][m_Values[0][nPos].size()-1].dMax * m_MapFrame.VersZ()) ;
|
||||
}
|
||||
// passo al punto successivo
|
||||
dX += m_dStep ;
|
||||
@@ -423,7 +425,7 @@ VolZmap::GetBBox( const Frame3d& frRef, BBox3d& b3Ref, int nFlag) const
|
||||
// reset box
|
||||
b3Ref.Reset() ;
|
||||
// trasformo il riferimento locale tramite quello passato
|
||||
Frame3d frUse = m_MapFrame[0] ;
|
||||
Frame3d frUse = m_MapFrame ;
|
||||
frUse.ToGlob( frRef) ;
|
||||
// se richiesto approssimato
|
||||
if ( ( nFlag & BBF_EXACT) == 0) {
|
||||
@@ -466,9 +468,8 @@ VolZmap::Translate( const Vector3d& vtMove)
|
||||
return false ;
|
||||
// imposto ricalcolo della grafica
|
||||
ResetGraphics() ;
|
||||
// traslo i riferimenti
|
||||
for ( int i = 0 ; i < int( m_nMapNum) ; ++ i)
|
||||
m_MapFrame[i].Translate( vtMove) ;
|
||||
// traslo il riferimento
|
||||
m_MapFrame.Translate( vtMove) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -481,9 +482,8 @@ VolZmap::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, doub
|
||||
return false ;
|
||||
// imposto ricalcolo della grafica
|
||||
ResetGraphics() ;
|
||||
// ruoto i riferimenti
|
||||
for ( int i = 0 ; i < int( m_nMapNum) ; ++ i)
|
||||
m_MapFrame[i].Rotate( ptAx, vtAx, dCosAng, dSinAng) ;
|
||||
// ruoto il riferimento
|
||||
m_MapFrame.Rotate( ptAx, vtAx, dCosAng, dSinAng) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -526,9 +526,8 @@ VolZmap::ToGlob( const Frame3d& frRef)
|
||||
return false ;
|
||||
// imposto ricalcolo della grafica
|
||||
ResetGraphics() ;
|
||||
// trasformo il riferimento
|
||||
for ( int i = 0 ; i < int ( m_nMapNum) ; ++ i)
|
||||
m_MapFrame[i].ToGlob( frRef) ;
|
||||
// trasformo il riferimento
|
||||
m_MapFrame.ToGlob( frRef) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -541,9 +540,8 @@ VolZmap::ToLoc( const Frame3d& frRef)
|
||||
return false ;
|
||||
// imposto ricalcolo della grafica
|
||||
ResetGraphics() ;
|
||||
// trasformo il riferimento
|
||||
for ( int i = 0 ; i < int( m_nMapNum) ; ++ i)
|
||||
m_MapFrame[i].ToLoc( frRef) ;
|
||||
// trasformo il riferimento
|
||||
m_MapFrame.ToLoc( frRef) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -556,9 +554,8 @@ VolZmap::LocToLoc( const Frame3d& frOri, const Frame3d& frDest)
|
||||
return false ;
|
||||
// imposto ricalcolo della grafica
|
||||
ResetGraphics() ;
|
||||
// trasformo il riferimento
|
||||
for ( int i = 0 ; i < int( m_nMapNum) ; ++ i)
|
||||
m_MapFrame[i].LocToLoc( frOri, frDest) ;
|
||||
// trasformo il riferimento
|
||||
m_MapFrame.LocToLoc( frOri, frDest) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -1090,12 +1087,10 @@ VolZmap::ClonePart( int nPart) const
|
||||
// Dimensiono raccolta triangoli di feature tra blocchi
|
||||
pVolume->m_InterBlockTria.resize( pVolume->m_nNumBlock) ;
|
||||
|
||||
// Sistemi di riferimento delle griglie del nuovo solido
|
||||
// Sistema di riferimento intrinseco del nuovo solido
|
||||
Point3d ptNewO( dNewOx, dNewOy, dNewOz) ;
|
||||
pVolume->m_MapFrame[0].Set( ptNewO, X_AX, Y_AX, Z_AX) ;
|
||||
pVolume->m_MapFrame[1].Set( ptNewO, Y_AX, Z_AX, X_AX) ;
|
||||
pVolume->m_MapFrame[2].Set( ptNewO, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
pVolume->m_MapFrame.Set( ptNewO, X_AX, Y_AX, Z_AX) ;
|
||||
|
||||
// Setto lo stato del nuovo Solido
|
||||
pVolume->m_nStatus = m_nStatus ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user