EgtGeomKernel :
- corretta CDeBoxClosedSurfTm caso verifica box interno a superficie chiusa - modificata CDeConeFrustumClosedSurfTm verifica tronco di cono interno a superficie chiusa tramite verifica del centro del cono - modificata CDeCylClosedSurfTm verifica cilindro interno a superficie chiusa tramite verifica del centro del cilindro - modificata CDeRectPrismoidClosedSurfTm verifica prismoide retto interno a superficie chiusa tramite verifica del centro del prismoide.
This commit is contained in:
@@ -46,9 +46,9 @@ CDeBoxClosedSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDi
|
||||
if ( ! Stm.IsClosed())
|
||||
return false ;
|
||||
// Verifico se il box è dentro la superficie tramite calcolo distanza minima.
|
||||
Point3d ptBoxOrig, ptBoxMax ;
|
||||
b3Box.GetMinMax( ptBoxOrig, ptBoxMax) ;
|
||||
DistPointSurfTm DistBoxOrigSurfCalc( ptBoxOrig, Stm) ;
|
||||
Point3d ptBoxCen = ORIG + vtDiag / 2 ;
|
||||
ptBoxCen.ToGlob( frBox) ;
|
||||
DistPointSurfTm DistBoxCenSurfCalc( ptBoxCen, Stm) ;
|
||||
// Se il box è interno c'è collisione
|
||||
return DistBoxOrigSurfCalc.IsPointInside() ;
|
||||
return DistBoxCenSurfCalc.IsPointInside() ;
|
||||
}
|
||||
|
||||
@@ -56,9 +56,9 @@ CDeConeFrustumClosedSurfTm( const Frame3d& frCone, double dBaseRad, double dTopR
|
||||
if ( ! Stm.IsClosed())
|
||||
return false ;
|
||||
// Verifico se il tronco di cono è dentro la superficie tramite calcolo distanza minima.
|
||||
Point3d ptConeOrig ;
|
||||
ptConeOrig.ToGlob( frCone) ;
|
||||
DistPointSurfTm DistConeOrigSurfCalc( ptConeOrig, Stm) ;
|
||||
Point3d ptConeCen( 0, 0, dHeight / 2) ;
|
||||
ptConeCen.ToGlob( frCone) ;
|
||||
DistPointSurfTm DistConeCenSurfCalc( ptConeCen, Stm) ;
|
||||
// Se il tronco di cono è interno c'è collisione
|
||||
return DistConeOrigSurfCalc.IsPointInside() ;
|
||||
return DistConeCenSurfCalc.IsPointInside() ;
|
||||
}
|
||||
@@ -52,9 +52,9 @@ CDeCylClosedSurfTm( const Frame3d& frCyl, double dR, double dH, double dSafeDist
|
||||
if ( ! Stm.IsClosed())
|
||||
return false ;
|
||||
// Verifico se il cilindro è dentro la superficie tramite calcolo distanza minima.
|
||||
Point3d ptCylOrig( 0., 0., - dSafeDist) ;
|
||||
ptCylOrig.ToGlob( frC) ;
|
||||
DistPointSurfTm DistCylOrigSurfCalc( ptCylOrig, Stm) ;
|
||||
Point3d ptCylCen( 0, 0, dH / 2) ;
|
||||
ptCylCen.ToGlob( frC) ;
|
||||
DistPointSurfTm DistCylCenSurfCalc( ptCylCen, Stm) ;
|
||||
// Se il cilindro è interno c'è collisione
|
||||
return ( DistCylOrigSurfCalc.IsPointInside()) ;
|
||||
return ( DistCylCenSurfCalc.IsPointInside()) ;
|
||||
}
|
||||
|
||||
@@ -63,8 +63,9 @@ CDeRectPrismoidClosedSurfTm( const Frame3d& frPrismoid, double dLenghtBaseX, dou
|
||||
if ( ! Stm.IsClosed())
|
||||
return false ;
|
||||
// Verifico se il tronco di piramide è dentro la superficie tramite calcolo distanza minima.
|
||||
Point3d ptPyrOrig = frPrismoid.Orig() ;
|
||||
DistPointSurfTm DistBoxOrigSurfCalc( ptPyrOrig, Stm) ;
|
||||
Point3d ptPyrCen( 0, 0, dHeight / 2) ;
|
||||
ptPyrCen.ToGlob( frPrismoid) ;
|
||||
DistPointSurfTm DistPyrCenSurfCalc( ptPyrCen, Stm) ;
|
||||
// C'è collisione se il tronco di piramide è interno.
|
||||
return ( DistBoxOrigSurfCalc.IsPointInside()) ;
|
||||
return ( DistPyrCenSurfCalc.IsPointInside()) ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user