EgtGeomKernel 1.8k3 :
- miglioramenti a Zmap.
This commit is contained in:
+21
-25
@@ -42,8 +42,8 @@ VolZmap::Create( const Point3d& ptO, double dLengthX, double dLengthY, double dL
|
||||
// di uno si ottengono da una permutazione ciclica di quelle del precedente sistema.
|
||||
// es: X(n) = Z(n-1), Y(n) = X(n-1), Z(n) = Y(n-1)
|
||||
|
||||
// Definisco i sistemi di riferimento
|
||||
m_MapFrame[0].Set( ptO, X_AX, Y_AX, Z_AX) ;
|
||||
// Definisco il sistema di riferimento intrinseco
|
||||
m_MapFrame.Set( ptO, X_AX, Y_AX, Z_AX) ;
|
||||
|
||||
// Definisco i vettori dei limiti su indici
|
||||
m_nNx[0] = static_cast <unsigned int> ( floor( ( dLengthX + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
|
||||
@@ -64,8 +64,6 @@ VolZmap::Create( const Point3d& ptO, double dLengthX, double dLengthY, double dL
|
||||
|
||||
// Se tridexel
|
||||
if ( bTriDex) {
|
||||
m_MapFrame[1].Set( ptO, Y_AX, Z_AX, X_AX) ;
|
||||
m_MapFrame[2].Set( ptO, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
m_nNx[1] = static_cast <unsigned int> ( floor( ( dLengthY + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
|
||||
m_nNy[1] = static_cast <unsigned int> ( floor( ( dLengthZ + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
|
||||
@@ -83,9 +81,7 @@ VolZmap::Create( const Point3d& ptO, double dLengthX, double dLengthY, double dL
|
||||
|
||||
// altrimenti mono dexel
|
||||
else {
|
||||
m_MapFrame[1].Set( ptO, Y_AX, Z_AX, X_AX) ;
|
||||
m_MapFrame[2].Set( ptO, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
|
||||
m_nNx[1] = 0 ;
|
||||
m_nNy[1] = 0 ;
|
||||
|
||||
@@ -183,8 +179,8 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
SurfBBox.GetMinMax( ptMapOrig, ptMapEnd) ;
|
||||
SurfBBox.Expand( 100 * EPS_SMALL, 100 * EPS_SMALL, 0) ;
|
||||
|
||||
// Sistema di riferimento mappa
|
||||
m_MapFrame[0].Set( ptMapOrig, X_AX, Y_AX, Z_AX) ;
|
||||
// Sistema di riferimento intrinseco dello Zmap
|
||||
m_MapFrame.Set( ptMapOrig, X_AX, Y_AX, Z_AX) ;
|
||||
|
||||
// Determino le dimensioni lineari X Y della griglia
|
||||
double dLengthX = ptMapEnd.x - ptMapOrig.x ;
|
||||
@@ -215,10 +211,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
|
||||
// Se Tridexel ridimensiono anche gli altri vettori
|
||||
if ( bTriDex) {
|
||||
|
||||
m_MapFrame[1].Set( ptMapOrig, Y_AX, Z_AX, X_AX) ;
|
||||
m_MapFrame[2].Set( ptMapOrig, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
|
||||
m_nNx[1] = static_cast <unsigned int> ( floor( ( dLengthY + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
|
||||
m_nNy[1] = static_cast <unsigned int> ( floor( ( dDimZ + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
|
||||
|
||||
@@ -241,9 +234,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
}
|
||||
|
||||
else {
|
||||
m_MapFrame[1].Set( ptMapOrig, Y_AX, Z_AX, X_AX) ;
|
||||
m_MapFrame[2].Set( ptMapOrig, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
|
||||
m_nNx[1] = 0 ;
|
||||
m_nNy[1] = 0 ;
|
||||
|
||||
@@ -510,8 +501,8 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dPrec, bool bTriDex
|
||||
// quindi espandiamo il bounding box per ovviare al problema.
|
||||
SurfBBox.Expand( 100 * EPS_SMALL, 100 * EPS_SMALL, 100 * EPS_SMALL) ;
|
||||
|
||||
// Sistema di riferimento mappa
|
||||
m_MapFrame[0].Set( ptMapOrig, Frame3d::TOP) ;
|
||||
// Sistema di riferimento intrinseco dello Zmap
|
||||
m_MapFrame.Set( ptMapOrig, Frame3d::TOP) ;
|
||||
|
||||
// Il passo di discretizzazione non può essere inferiore a 100 * EPS_SMALL
|
||||
m_dStep = max( dPrec, 100 * EPS_SMALL) ;
|
||||
@@ -544,9 +535,7 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dPrec, bool bTriDex
|
||||
|
||||
// Se Tridexel ridimensiono anche gli altri vettori
|
||||
if ( bTriDex) {
|
||||
m_MapFrame[1].Set( ptMapOrig, Y_AX, Z_AX, X_AX) ; // Sarà Front Left
|
||||
m_MapFrame[2].Set( ptMapOrig, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
|
||||
m_nNx[1] = static_cast <unsigned int> ( floor( ( vtLen.y + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
|
||||
m_nNy[1] = static_cast <unsigned int> ( floor( ( vtLen.z + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
|
||||
|
||||
@@ -569,9 +558,7 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dPrec, bool bTriDex
|
||||
}
|
||||
|
||||
else {
|
||||
m_MapFrame[1].Set( ptMapOrig, Y_AX, Z_AX, X_AX) ;
|
||||
m_MapFrame[2].Set( ptMapOrig, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
|
||||
m_nNx[1] = 0 ;
|
||||
m_nNy[1] = 0 ;
|
||||
m_nDim[1] = 0 ;
|
||||
@@ -587,8 +574,17 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dPrec, bool bTriDex
|
||||
// ciclo sulle griglie
|
||||
for ( unsigned int g = 0 ; g < m_nMapNum ; ++ g) {
|
||||
|
||||
// Definisco dei sistemi di riferimento ausiliari
|
||||
Frame3d frMapFrame ;
|
||||
if ( g == 0)
|
||||
frMapFrame = m_MapFrame ;
|
||||
else if ( g == 1)
|
||||
frMapFrame.Set( ptMapOrig, Y_AX, Z_AX, X_AX) ;
|
||||
else if ( g == 2)
|
||||
frMapFrame.Set( ptMapOrig, Z_AX, X_AX, Y_AX) ;
|
||||
|
||||
// Oggetto per calcolo massivo intersezioni
|
||||
IntersParLinesSurfTm intPLSTM( m_MapFrame[g], Surf) ;
|
||||
IntersParLinesSurfTm intPLSTM( frMapFrame, Surf) ;
|
||||
|
||||
// Determinazione e ridimensionamento dei dexel interni alla trimesh
|
||||
for ( unsigned int i = 0 ; i < m_nNx[g] ; ++ i) {
|
||||
|
||||
Reference in New Issue
Block a user