Allow for rounding error in connection width checker
We perform checks using squared distance but this loses the integer rounding in the standard norm. To correct for this, we allow a single IU in the restriction, allowing fractionally smaller connection widths before calculating the squared limit Fixes https://gitlab.com/kicad/code/kicad/issues/14130 Fixes https://gitlab.com/kicad/code/kicad/issues/14131
This commit is contained in:
parent
4a761179d0
commit
a0f99ea8ba
|
@ -523,7 +523,12 @@ private:
|
||||||
// z-order range for the current point ± limit bounding box
|
// z-order range for the current point ± limit bounding box
|
||||||
const int32_t maxZ = zOrder( aPt->x + m_limit, aPt->y + m_limit );
|
const int32_t maxZ = zOrder( aPt->x + m_limit, aPt->y + m_limit );
|
||||||
const int32_t minZ = zOrder( aPt->x - m_limit, aPt->y - m_limit );
|
const int32_t minZ = zOrder( aPt->x - m_limit, aPt->y - m_limit );
|
||||||
const SEG::ecoord limit2 = SEG::Square( m_limit );
|
|
||||||
|
// Subtract 1 to account for rounding inaccuracies in SquaredEuclideanNorm()
|
||||||
|
// below. We would usually test for rounding in the final value but since we
|
||||||
|
// are working in squared integers here, we allow the 1nm slop rather than
|
||||||
|
// force a separate calculation
|
||||||
|
const SEG::ecoord limit2 = SEG::Square( m_limit - 1 );
|
||||||
|
|
||||||
// first look for points in increasing z-order
|
// first look for points in increasing z-order
|
||||||
Vertex* p = aPt->nextZ;
|
Vertex* p = aPt->nextZ;
|
||||||
|
|
Loading…
Reference in New Issue