forked from 1b-agent/opencadstudio-upstream
fix(mirror): negate polyline bulges in the MIRROR command
The MIRROR command's LwPolyline / Polyline2D closures reflected the vertices but left the bulges untouched, so every curved segment of a mirrored polyline bowed to the wrong side. A reflection reverses the side a bulge arc bows to — negate it alongside the vertex reflection (same convention acadrust applies on its reflecting-transform paths). Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
6d60ef45d5
commit
80059922c5
2 files changed
+6
No files matched your search
@@ -421,6 +421,9 @@ fn apply_transform(pline: &mut LwPolyline, t: &EntityTransform) {
|
||||
crate::scene::transform::apply_standard_entity_transform(pline, t, |entity, p1, p2| {
|
||||
for v in &mut entity.vertices {
|
||||
crate::scene::transform::reflect_xy_point(&mut v.location.x, &mut v.location.y, p1, p2);
|
||||
// Bulge encodes which side the arc bows to; a reflection
|
||||
// reverses it or every curved segment flips to the wrong side.
|
||||
v.bulge = -v.bulge;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -475,6 +475,9 @@ impl Transformable for Polyline2D {
|
||||
p1,
|
||||
p2,
|
||||
);
|
||||
// Bulge encodes which side the arc bows to; a reflection
|
||||
// reverses it or every curved segment flips to the wrong side.
|
||||
v.bulge = -v.bulge;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user