EgtGeomKernel 1.8e4 :

- correzione a ApproxOnSide e MakeConvex di PolyLine per percorsi chiusi
- migliorie e correzioni Zmap.
This commit is contained in:
Dario Sassi
2017-05-25 09:40:56 +00:00
parent 0a98461e3e
commit 98299d118c
7 changed files with 304 additions and 2293 deletions
+12 -20
View File
@@ -190,8 +190,6 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
// A partire dalle dimensioni di xy del grezzo determino il numero di colonne e righe
// della griglia Zmap e da questi la dimensione del vettore di dexel
//m_nNx[0] = static_cast <unsigned int> ( ceil( dLengthX / m_dStep)) ;
//m_nNy[0] = static_cast <unsigned int> ( ceil( dLengthY / m_dStep)) ;
m_nNx[0] = static_cast <unsigned int> ( floor( ( dLengthX + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
m_nNy[0] = static_cast <unsigned int> ( floor( ( dLengthY + 0.5 * m_dStep + EPS_SMALL) / m_dStep)) ;
@@ -216,12 +214,6 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
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> ( ceil( dLengthY / m_dStep)) ;
//m_nNy[1] = static_cast <unsigned int> ( ceil( dDimZ / m_dStep)) ;
//m_nNx[2] = static_cast <unsigned int> ( ceil( dDimZ / m_dStep)) ;
//m_nNy[2] = static_cast <unsigned int> ( ceil( dLengthX / m_dStep)) ;
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)) ;
@@ -264,9 +256,9 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
// Definisco la retta da intersecare con la regione
double dX = ( i + 0.5) * m_dStep ;
Point3d ptP0 = ptMapOrig + Vector3d( dX, 0, 0) ; // CAMBIATO CON EPS
Point3d ptP0 = ptMapOrig + Vector3d( dX, 0, 0) ;
CurveLine GridLine ;
GridLine.SetPVL( ptP0, Y_AX, dLengthY) ; // CAMBIATO CON EPS
GridLine.SetPVL( ptP0, Y_AX, dLengthY) ;
// Determino le intersezioni della retta con la regione
CRVCVECTOR IntersectionResults ;
@@ -288,8 +280,8 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
if ( nType == CRVC_IN || nType == CRVC_ON_P || nType == CRVC_ON_M) {
// Indici corrispondenti alle coordinate dei punti
int nStartJ = Clamp( int( floor( dt1 * dLengthY / m_dStep - EPS_SMALL + 0.5)), 0, m_nNy[0] - 1) ; // CAMBIATO CON EPS
int nEndJ = Clamp( int( floor( dt2 * dLengthY / m_dStep + EPS_SMALL - 0.5)), 0, m_nNy[0] - 1) ; // CAMBIATO CON EPS
int nStartJ = Clamp( int( floor( dt1 * dLengthY / m_dStep - EPS_SMALL + 0.5)), 0, m_nNy[0] - 1) ;
int nEndJ = Clamp( int( floor( dt2 * dLengthY / m_dStep + EPS_SMALL - 0.5)), 0, m_nNy[0] - 1) ;
// Ridimensiono e riempio i dexel
for ( int j = nStartJ ; j <= nEndJ ; ++ j) {
@@ -319,8 +311,8 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
m_Values[2][nPos2][nCurrentSize].dZVal = dt1 * dLengthY ;
m_Values[2][nPos2][nCurrentSize + 1].dZVal = dt2 * dLengthY ;
Point3d ptP1 = ptP0 + dt1 * dLengthY * Y_AX ;//+ ( a + 0.5) * Z_AX ; // CAMBIATO CON EPS
Point3d ptP2 = ptP0 + dt2 * dLengthY * Y_AX ;//+ ( a + 0.5) * Z_AX ; // CAMBIATO CON EPS
Point3d ptP1 = ptP0 + dt1 * dLengthY * Y_AX ;//+ ( a + 0.5) * Z_AX ;
Point3d ptP2 = ptP0 + dt2 * dLengthY * Y_AX ;//+ ( a + 0.5) * Z_AX ;
int nChunkNum = Surf.GetChunkCount() ;
@@ -373,9 +365,9 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
// Definisco la retta da intersecare con la regione
double dX = ( i + 0.5) * m_dStep ;
Point3d ptP0 = ptMapOrig + Vector3d( 0, dX, 0) ; ////// // CAMBIATO CON EPS
Point3d ptP0 = ptMapOrig + Vector3d( 0, dX, 0) ;
CurveLine GridLine ;
GridLine.SetPVL( ptP0, X_AX, dLengthX ) ; //// // CAMBIATO CON EPS
GridLine.SetPVL( ptP0, X_AX, dLengthX ) ;
// Determino le intersezioni della retta con la regione
CRVCVECTOR IntersectionResults ;
@@ -404,11 +396,11 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
m_Values[1][nPos1].resize( nCurrentSize + 2) ;
m_Values[1][nPos1][nCurrentSize].dZVal = dt1 * dLengthX ; // CAMBIATO CON EPS
m_Values[1][nPos1][nCurrentSize + 1].dZVal = dt2 * dLengthX ; // CAMBIATO CON EPS
m_Values[1][nPos1][nCurrentSize].dZVal = dt1 * dLengthX ;
m_Values[1][nPos1][nCurrentSize + 1].dZVal = dt2 * dLengthX ;
Point3d ptP1 = ptP0 + dt1 * dLengthX * X_AX ; /// cAMBIO
Point3d ptP2 = ptP0 + dt2 * dLengthX * X_AX ; // CAMBIATO CON EPS
Point3d ptP1 = ptP0 + dt1 * dLengthX * X_AX ;
Point3d ptP2 = ptP0 + dt2 * dLengthX * X_AX ;
int nChunkNum = Surf.GetChunkCount() ;