kicad-developers team mailing list archive
Mailing list archive
Re: Arc Adjustment proposal
On 7/10/19 2:20 PM, Seth Hillbrand wrote:
I'm not sure I'm convinced that start-mid-end is any more or less immune
to invalidity than start-center-end. Either can be specified in such a
way as to represent an invalid geometry -- both are susceptible to one
constraining point not being on the same arc (that is, the same distance
from a specified or implied center point) as another. In either case,
KiCad would need to be able to handle this situation, either by applying
some rounding factor to bring errant points in line, or by emitting an
error (or not) and discarding the invalid geometry.
On 2019-07-10 14:08, Brian wrote:
On 7/10/19 2:02 PM, Seth Hillbrand wrote:
Start-center-end is under constrained and requires the additional
knowledge of which direction the arc is going.
On the contrary. Start-center-end is fully constrained. Arc
direction is implied and unambiguous.
Ah yes, you are right. We can assume a CW or CCW direction and swap
start/end to match.
The only remaining concern would be robustness. You can create a
start-center-end combination that is invalid, so we'd need to define a
The start-midpoint-end triplet can also be invalid but only if you
assume the midpoint is exactly midway. The three-point conversion I
listed previously allows the third point to exist anywhere on the arc
and avoids this issue.
As an aside, geometrically speaking, there's no requirement that "mid"
be actually equidistant from start and end; the only requirement is that
it be between them and on the same arc (co-arcear? is there a word for
the curved version of colinear?). Though not relevant for the concern of
fully-constrained-ness, I think start-center-end actually leaves less
room for invalidity, as it is easily validated by comparing the linear
distance between both endpoints and the centerpoint (i.e. test for
constant radius). With start-mid-end, the centerpoint must first be
derived in order to find out if the geometry is valid (and if it isn't,
deriving a centerpoint is ambiguous itself).