feat(cam): signed contour offsetting with corner joins #53

Merged
patman merged 1 commit from patman/cam-offset into main 2026-07-09 23:27:45 +00:00 AGit
Owner

PR3 core of the adaptive-clearing roadmap: offset_closed(contour, distance) — signed planar offset, positive = left of travel (interior of a CCW loop). Lines translate along the left normal; arcs shrink/grow radius by side; tangent (G1) junctions reconnect exactly; separating junctions get an arc join centered on the original vertex (sweep provably < pi); overlapping line-line junctions trim at the intersection. Deferred honestly: arc-involved trims (TrimUnsupported), global self-intersection. Result re-validates through Contour::new with the input tolerance. Guards for the two known silent-corruption envelopes land in the stacked follow-up PR — offset_closed must not be consumed until that merges. Stacked on patman/cam-stock (#52).

PR3 core of the adaptive-clearing roadmap: offset_closed(contour, distance) — signed planar offset, positive = left of travel (interior of a CCW loop). Lines translate along the left normal; arcs shrink/grow radius by side; tangent (G1) junctions reconnect exactly; separating junctions get an arc join centered on the original vertex (sweep provably < pi); overlapping line-line junctions trim at the intersection. Deferred honestly: arc-involved trims (TrimUnsupported), global self-intersection. Result re-validates through Contour::new with the input tolerance. Guards for the two known silent-corruption envelopes land in the stacked follow-up PR — offset_closed must not be consumed until that merges. Stacked on patman/cam-stock (#52).
Co-authored-by: patman-assist <patrick-ai@kgroo.co>
patman changed target branch from patman/cam-stock to main 2026-07-09 23:27:44 +00:00
patman merged commit dc1ea0ebbc into main 2026-07-09 23:27:45 +00:00
Sign in to join this conversation.
No description provided.