EgtGeomKernel 1.8j5 :

- modifiche a Zmap per moltiplicatore tra dexel e voxel.
This commit is contained in:
Dario Sassi
2017-10-30 08:43:06 +00:00
parent 2ecd82c61f
commit 1862e2dea1
7 changed files with 368 additions and 460 deletions
+12 -9
View File
@@ -355,12 +355,12 @@ VolZmap::GetDepthWithVoxel( const Point3d& ptP, const Vector3d& vtD, double& dIn
// Ciclo sui voxel
while ( IsValidVoxel( nVoxI, nVoxJ, nVoxK)) {
// Estremi della diagonale del voxel corrente
Point3d ptMin( ( nVoxI + 0.5) * m_dStep,
( nVoxJ + 0.5) * m_dStep,
( nVoxK + 0.5) * m_dStep) ;
Point3d ptMax( ( nVoxI + 1.5) * m_dStep,
( nVoxJ + 1.5) * m_dStep,
( nVoxK + 1.5) * m_dStep) ;
Point3d ptMin( ( nVoxI * N_DEXVOXRATIO + 0.5) * m_dStep,
( nVoxJ * N_DEXVOXRATIO + 0.5) * m_dStep,
( nVoxK * N_DEXVOXRATIO + 0.5) * m_dStep) ;
Point3d ptMax( ( ( nVoxI + 1) * N_DEXVOXRATIO + 0.5) * m_dStep,
( ( nVoxJ + 1) * N_DEXVOXRATIO + 0.5) * m_dStep,
( ( nVoxK + 1) * N_DEXVOXRATIO + 0.5) * m_dStep) ;
// Studio il voxel corrente
if ( IntersLineBox( ptP, vtD, ptMin, ptMax)) {
Voxel NewVox ;
@@ -370,9 +370,12 @@ VolZmap::GetDepthWithVoxel( const Point3d& ptP, const Vector3d& vtD, double& dIn
vVox.emplace_back( NewVox) ;
}
// Interseco la retta con i piani frontiera del voxel
double dMaxTX = ( abs( vtD.x) > EPS_ZERO ? abs( ( ( nVoxI + nPlaneI + 0.5) * m_dStep - ptP.x) / vtD.x) : INFINITO) ;
double dMaxTY = ( abs( vtD.y) > EPS_ZERO ? abs( ( ( nVoxJ + nPlaneJ + 0.5) * m_dStep - ptP.y) / vtD.y) : INFINITO) ;
double dMaxTZ = ( abs( vtD.z) > EPS_ZERO ? abs( ( ( nVoxK + nPlaneK + 0.5) * m_dStep - ptP.z) / vtD.z) : INFINITO) ;
double dMaxTX = ( abs( vtD.x) > EPS_ZERO ?
abs( ( ( ( nVoxI + nPlaneI) * N_DEXVOXRATIO + 0.5) * m_dStep - ptP.x) / vtD.x) : INFINITO) ;
double dMaxTY = ( abs( vtD.y) > EPS_ZERO ?
abs( ( ( ( nVoxJ + nPlaneJ) * N_DEXVOXRATIO + 0.5) * m_dStep - ptP.y) / vtD.y) : INFINITO) ;
double dMaxTZ = ( abs( vtD.z) > EPS_ZERO ?
abs( ( ( ( nVoxK + nPlaneK) * N_DEXVOXRATIO + 0.5) * m_dStep - ptP.z) / vtD.z) : INFINITO) ;
if ( dMaxTX < dMaxTY) {
if ( dMaxTX < dMaxTZ)