Prevent round-off errors from drawing one spoke and not the other.

Fixes https://gitlab.com/kicad/code/kicad/issues/13316
This commit is contained in:
Jeff Young 2023-01-02 19:23:33 +00:00
parent c5948de2af
commit f4bce6079c
1 changed files with 5 additions and 1 deletions

View File

@ -1302,7 +1302,11 @@ bool ZONE_FILLER::fillCopperZone( const ZONE* aZone, PCB_LAYER_ID aLayer, PCB_LA
// Hit-test against other spokes
for( const SHAPE_LINE_CHAIN& other : thermalSpokes )
{
if( &other != &spoke && other.PointInside( testPt, 1, USE_BBOX_CACHES ) )
// Hit test in both directions to avoid interactions with round-off errors.
// (See https://gitlab.com/kicad/code/kicad/-/issues/13316.)
if( &other != &spoke
&& other.PointInside( testPt, 1, USE_BBOX_CACHES )
&& spoke.PointInside( other.CPoint( 3 ), 1, USE_BBOX_CACHES ) )
{
if( m_debugZoneFiller )
debugSpokes.AddOutline( spoke );