← Back to team overview

kicad-developers team mailing list archive

Re: Arc Adjustment proposal


On 7/10/19 2:20 PM, Seth Hillbrand wrote:
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 governing parameter.

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.
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.

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).

My $0.02,

Follow ups