- corretta la gestione delle proprietà ext_appl dei punti nel caso di intersezione.
This commit is contained in:
SaraP
2024-07-16 16:33:06 +02:00
parent 430c32be19
commit 55a90df3c3
2 changed files with 13 additions and 2 deletions
+7
View File
@@ -1013,6 +1013,13 @@ void vroniObject::MergePoints(int i1, int i2)
SetXCoord(i2, w.x);
SetYCoord(i2, w.y);
// MODIF visto che uno dei due punti viene cancellato, uniformo anche le ext_appl. Serve nel caso in cui
// uno dei due punti deriva da intersezione ( quindi non ha punto originario di riferimento)
if ( pnts[i1].ext_appl.second == -1)
pnts[i1].ext_appl = pnts[i2].ext_appl ;
else if ( pnts[i2].ext_appl.second == -1)
pnts[i2].ext_appl = pnts[i1].ext_appl ;
restart = true;
return;
+6 -2
View File
@@ -719,7 +719,9 @@ void vroniObject::SplitAtIntersections(grid* grid, double_arg eps)
for (it = sege->intersections->begin(); it != sege->intersections->end(); it++) {
coord c = *it;
#ifdef EXT_APPL_PNTS
i3 = StorePnt(c.x, c.y, eap_NIL);
// MODIF: al nuovo punto aggiunto dall'intersezione posso assegnare soltanto il loop originario, visto che non deriva
// da alcun punto della curva di partenza
i3 = StorePnt(c.x, c.y, {segs[i1].ext_appl.first, -1});
#else
i3 = StorePnt(c.x, c.y);
#endif
@@ -738,7 +740,9 @@ void vroniObject::SplitAtIntersections(grid* grid, double_arg eps)
for (it1 = arce->intersections.begin(); it1 != arce->intersections.end(); it1++) {
coord c = (*it1).c;
#ifdef EXT_APPL_PNTS
i3 = StorePnt(c.x, c.y, eap_NIL);
// MODIF: al nuovo punto aggiunto dall'intersezione posso assegnare soltanto il loop originario, visto che non deriva
// da alcun punto della curva di partenza
i3 = StorePnt(c.x, c.y, {arcs[i1].ext_appl.first, -1});
#else
i3 = StorePnt(c.x, c.y);
#endif