EgtGeomKernel :
- correzioni alla RuledByIsoParamSet.
This commit is contained in:
+22
-16
@@ -6520,12 +6520,12 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c
|
||||
bool bSplitToAdd = true ;
|
||||
int c0 = 0, c1 = 0 ;
|
||||
while ( bSplitToAdd) {
|
||||
if ( c0 > ssize( vdParamPos0) - 1 && c1 > ssize( vdParamPos1) - 1) {
|
||||
if ( c0 > ssize( vdParamPos0) - 1 || c1 > ssize( vdParamPos1) - 1) {
|
||||
LOG_DBG_ERR( GetEGkLogger(), "Surf Bez Ruled Guided: error while reparametrizing some section") ;
|
||||
return false ;
|
||||
}
|
||||
// se ho una corrispondenza tra punti ( e non sono alla fine del tratto) allora non aggiungo split
|
||||
if ( abs( vdParamPos0[c0] - vdParamPos1[c1]) < EPS_SMALL && vdParamPos0[c0] < 1) {
|
||||
if ( abs( vdParamPos0[c0] - vdParamPos1[c1]) < EPS_PARAM && vdParamPos0[c0] < 1) {
|
||||
++c0 ;
|
||||
++c1 ;
|
||||
++nLastParam0 ;
|
||||
@@ -6535,14 +6535,17 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c
|
||||
// se non ho corrispondenza allora aggiungo uno split sulla curva a cui manca il punto corrispondente
|
||||
else if ( vdParamPos0[c0] < vdParamPos1[c1]) {
|
||||
double dPar ; CrvU1.GetParamAtLength( dLenPrev1 + dLen1 * vdParamPos0[c0], dPar) ;
|
||||
if ( abs( dPar - round( dPar)) > EPS_SMALL) {
|
||||
vdSplit1.push_back( dPar) ;
|
||||
nSplit1 = vdSplit1.size() ;
|
||||
}
|
||||
else if ( dPar = round( dPar) ; dPar > nLastParam1){
|
||||
++ c1 ;
|
||||
++ nLastParam1 ;
|
||||
if ( dPar > dLastParam1 + EPS_PARAM) {
|
||||
if ( abs( dPar - round( dPar)) > EPS_PARAM) {
|
||||
vdSplit1.push_back( dPar) ;
|
||||
nSplit1 = vdSplit1.size() ;
|
||||
}
|
||||
else if ( dPar = round( dPar) ; dPar > nLastParam1){
|
||||
++ c1 ;
|
||||
++ nLastParam1 ;
|
||||
}
|
||||
}
|
||||
dLastParam1 = dPar ;
|
||||
++nLastParam0 ;
|
||||
vPairs.emplace_back( nLastParam0 + nSplit0, nLastParam1 + nSplit1) ;
|
||||
++c0 ;
|
||||
@@ -6550,14 +6553,17 @@ SurfBezier::CreateByIsoParamSet( const ICurve* pCurve0, const ICurve* pCurve1, c
|
||||
else if ( vdParamPos0[c0] > vdParamPos1[c1]) {
|
||||
double dPar ; CrvU0.GetParamAtLength( dLenPrev0 + dLen0 * vdParamPos1[c1], dPar) ;
|
||||
// se lo split non è in prossimità di una joint già esistente allora lo aggiungo
|
||||
if ( abs( dPar - round( dPar)) > EPS_SMALL) {
|
||||
vdSplit0.push_back( dPar) ;
|
||||
nSplit0 = vdSplit0.size() ;
|
||||
}
|
||||
else if ( dPar = round( dPar) ; dPar > nLastParam0){
|
||||
++ c0 ;
|
||||
++ nLastParam0 ;
|
||||
if ( dPar > dLastParam0 + EPS_PARAM) {
|
||||
if ( abs( dPar - round( dPar)) > EPS_PARAM) {
|
||||
vdSplit0.push_back( dPar) ;
|
||||
nSplit0 = vdSplit0.size() ;
|
||||
}
|
||||
else if ( dPar = round( dPar) ; dPar > nLastParam0){
|
||||
++ c0 ;
|
||||
++ nLastParam0 ;
|
||||
}
|
||||
}
|
||||
dLastParam0 = dPar ;
|
||||
++nLastParam1 ;
|
||||
vPairs.emplace_back( nLastParam0 + nSplit0, nLastParam1 + nSplit1) ;
|
||||
++c1 ;
|
||||
|
||||
Reference in New Issue
Block a user