EgtGeomKeller :
- correzione in calcolo triangoli di Zmap.
This commit is contained in:
+18
-18
@@ -2422,30 +2422,30 @@ VolZmap::RegulateFeaturesChain( vector<VoxelContainer>& vVecVox) const
|
||||
double dMidU = ( ptMid - ptPSt) * vtStEn ;
|
||||
double dCurU = ( ptPCur - ptPSt) * vtStEn ;
|
||||
Point3d ptNew ;
|
||||
Point3d ptPLine ;
|
||||
Vector3d vtDLine ;
|
||||
//Point3d ptPLine ;
|
||||
//Vector3d vtDLine ;
|
||||
if ( dMidU < dCurU) {
|
||||
ptPLine = ptPEn ;
|
||||
vtDLine = - vtCurrEn ;
|
||||
//ptPLine = ptPEn ;
|
||||
//vtDLine = - vtCurrEn ;
|
||||
ptNew = ptPEn + ( ptMid - ptPEn) * vtCurrEn * vtCurrEn ;
|
||||
}
|
||||
else {
|
||||
ptPLine = ptPSt ;
|
||||
vtDLine = vtStCurr ;
|
||||
//ptPLine = ptPSt ;
|
||||
//vtDLine = vtStCurr ;
|
||||
ptNew = ptPSt + ( ptMid - ptPSt) * vtStCurr * vtStCurr ;
|
||||
}
|
||||
Point3d ptCubeInf( ( CurVox.i * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
( CurVox.j * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
( CurVox.k * N_DEXVOXRATIO + 0.5) * m_dStep) ;
|
||||
Point3d ptCubeSup( ( ( CurVox.i + 1) * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
( ( CurVox.j + 1) * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
( ( CurVox.k + 1) * N_DEXVOXRATIO + 0.5) * m_dStep) ;
|
||||
double dU1, dU2 ;
|
||||
if ( 1 - abs( vtStCurr * vtCurrEn ) < EPS_ZERO &&
|
||||
IntersLineBox( ptPLine, vtDLine, ptCubeInf, ptCubeSup, dU1, dU2)) {
|
||||
double dU = abs( dU1) < abs( dU2) ? dU1 + ( dU2 - dU1) / 2 : dU2 + ( dU1 - dU2) / 2 ;
|
||||
ptNew = ptPLine + dU * vtDLine ;
|
||||
}
|
||||
//Point3d ptCubeInf( ( CurVox.i * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
// ( CurVox.j * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
// ( CurVox.k * N_DEXVOXRATIO + 0.5) * m_dStep) ;
|
||||
//Point3d ptCubeSup( ( ( CurVox.i + 1) * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
// ( ( CurVox.j + 1) * N_DEXVOXRATIO + 0.5) * m_dStep,
|
||||
// ( ( CurVox.k + 1) * N_DEXVOXRATIO + 0.5) * m_dStep) ;
|
||||
//double dU1, dU2 ;
|
||||
//if ( 1 - abs( vtStCurr * vtCurrEn ) < EPS_ZERO &&
|
||||
// IntersLineBox( ptPLine, vtDLine, ptCubeInf, ptCubeSup, dU1, dU2)) {
|
||||
// double dU = abs( dU1) < abs( dU2) ? dU1 + ( dU2 - dU1) / 2 : dU2 + ( dU1 - dU2) / 2 ;
|
||||
// ptNew = ptPLine + dU * vtDLine ;
|
||||
//}
|
||||
bool bNewInside = IsPointInsideVoxelApprox( CurVox.i, CurVox.j, CurVox.k, ptNew, 0) ;
|
||||
if ( abs( vtStCurr * vtStEn) > 0.95 && abs( vtStCurr * vtCurrEn) > 0.95 &&
|
||||
abs( vtStEn * vtCurrEn) > 0.95) {
|
||||
|
||||
Reference in New Issue
Block a user