EgtGeomKernel :

- correzione per memory leaks a offset semplice di curve composite
- aggiunta creazione regione da curva ingrossata
- collisione tra regioni estesa a contorni sia con curve composite sia con singola curva.
This commit is contained in:
Dario Sassi
2016-01-27 07:44:04 +00:00
parent 02c7bf3ce7
commit d945d53ab5
3 changed files with 143 additions and 40 deletions
+8 -10
View File
@@ -124,14 +124,13 @@ MySimpleCDSurfFrMove::Translate( const Vector3d& vtDir, double& dLen)
const ICurve* pCrv1Loc = m_pRegM->GetMyLoop( j, 0) ;
// verifico la collisione tra le entità dei loop esterni dei due chunk
// per ora solo curve composite
const CurveComposite* pCompo1 = GetBasicCurveComposite( pCrv1Loc) ;
const CurveComposite* pCompo2 = GetBasicCurveComposite( pCrv2Loc) ;
int k = 0 ;
const ICurve* pCrv1 = pCompo1->GetFirstCurve() ;
const ICurve* pCrv1 = ( pCompo1 != nullptr ? pCompo1->GetFirstCurve() : pCrv1Loc) ;
while ( pCrv1 != nullptr) {
int l = 0 ;
const ICurve* pCrv2 = pCompo2->GetFirstCurve() ;
const ICurve* pCrv2 = ( pCompo2 != nullptr ? pCompo2->GetFirstCurve() : pCrv2Loc) ;
while ( pCrv2 != nullptr) {
SCollInfo scInfoCurr ;
double dPrevLenXY = dNewLenXY ;
@@ -153,10 +152,10 @@ MySimpleCDSurfFrMove::Translate( const Vector3d& vtDir, double& dLen)
m_SCollInfo.nChunkF = i ;
m_SCollInfo.nCrvF = l ;
}
pCrv2 = pCompo2->GetNextCurve() ;
pCrv2 = ( pCompo2 != nullptr ? pCompo2->GetNextCurve() : nullptr) ;
++ l ;
}
pCrv1 = pCompo1->GetNextCurve() ;
pCrv1 = ( pCompo1 != nullptr ? pCompo1->GetNextCurve() : nullptr) ;
++ k ;
}
}
@@ -224,18 +223,17 @@ MySimpleCDSurfFrMove::Rotate( const Point3d& ptCen, double& dAng)
const ICurve* pCrv1Loc = m_pRegM->GetMyLoop( j, 0) ;
// verifico la collisione tra le entità dei loop esterni dei due chunk
// per ora solo curve composite
const CurveComposite* pCompo1 = GetBasicCurveComposite( pCrv1Loc) ;
const CurveComposite* pCompo2 = GetBasicCurveComposite( pCrv2Loc) ;
const ICurve* pCrv1 = pCompo1->GetFirstCurve() ;
const ICurve* pCrv1 = ( pCompo1 != nullptr ? pCompo1->GetFirstCurve() : pCrv1Loc) ;
while ( pCrv1 != nullptr) {
const ICurve* pCrv2 = pCompo2->GetFirstCurve() ;
const ICurve* pCrv2 = ( pCompo2 != nullptr ? pCompo2->GetFirstCurve() : pCrv2Loc) ;
while ( pCrv2 != nullptr) {
if ( ! RotateCurveNoCollisionCurve( pCrv1, pCrv2, ptCenL, dNewAng))
return false ;
pCrv2 = pCompo2->GetNextCurve() ;
pCrv2 = ( pCompo2 != nullptr ? pCompo2->GetNextCurve() : nullptr) ;
}
pCrv1 = pCompo1->GetNextCurve() ;
pCrv1 = ( pCompo1 != nullptr ? pCompo1->GetNextCurve() : nullptr) ;
}
}
}