← Back to team overview

kicad-developers team mailing list archive

Arc Adjustment proposal


Hi Devs-

I'd like to adjust how our arcs are handled and stored. This is part of the arc tracks work package but is sufficiently tangential that I think it bears checking before I implement.

Problem: Arcs are stored in the pcbnew file using center, start point and arc angle. This leaves the end point of the arc subject to rounding errors. This causes problems in STEP export as well as (for the arc tracks) connectivity issues as dragging requires point matching, not just copper overlap.

Proposed solution: I would like to adjust the pcbnew file format and internal SHAPE_ARC, DRAWSEGMENT arc and EDGE_MODULE arc to use a single format consisting of start point, mid point and end point. Mid point here is defined as the point along the arc that is at the half-angle of the full arc.

In this case, the values used and saved for connectivity and edge continuity will be fixed. The center point of the arc may vary due to rounding issues but arc will remain continuous with its neighboring segments. Since the mid point of the arc is also saved, we closely constrain the arc extent as well.

To get the arc center in this case (for drawing/plotting), we would use GetArcCenter() from trigo.cpp.

Does anyone have objections to this course of action? If not, I'll send around the patch for testing before pushing.


Follow ups