When arcs do not share a center, the circle formed by the arc will be
closer on one side than the other. When this happens, the NearestPoints
calculation was accidentally taking the distance from the wrong side of
the circle.
Note that this was likely due to the conventions for Rotate (positive =
reduce angle) being mixed up with angular addition
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20636
Handle arcs properly even when not exactly concentric. Properly check
for interfering elements that would prevent coupling. Avoiding those
that are directly connected
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17967
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
When two arcs only barely overlapped, we cannot predict the actual point
ends as they exist in the error margins. Since arc tracks have
different radii by definition, rounding errors in calculating the
overlap angle led to some mistaken identification of parallel segments.
This adds an advanced config flag to set the preferred cutoff point
(currently 0.001°) for whether two arcs actually overlap in shared angle
space
Threaded DRC access will write to this string, re-allocating the memory
without any synchronization between threads using the string. Comment
adding this listed performance as a reason for using shared strings.
Measured performance does not seem noticeably different in either case,
even with high-error count boards. If there is a case where the
performance is limiting, we can replace these wxStrings with
std::wstring and utilize fmt
Fixes https://gitlab.com/kicad/code/kicad/issues/9888
ApproximatelyParallel will only check for parallel within 1 IU, so a 1x1
SEG will always be parallel and the projection is invalid
(cherry picked from commit d0796399a248f3ca3154c6ec250cc7ecf3f8143e)
The main issue was a parameter mismatch which caused On^2 behaviour
for zone layers.
But there are several other performance optimizations here, along
with status bar updating for zones while running the dissallow test.
Fixes https://gitlab.com/kicad/code/kicad/issues/8521