Browse Source

DP tolerance needs to be 1IU on each axis

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 d0796399a2)
7.0
Seth Hillbrand 4 years ago
parent
commit
819276bd98
  1. 6
      pcbnew/drc/drc_test_provider_diff_pair_coupling.cpp

6
pcbnew/drc/drc_test_provider_diff_pair_coupling.cpp

@ -202,9 +202,9 @@ static void extractDiffPairCoupledItems( DIFF_PAIR_ITEMS& aDp, DRC_RTREE& aTree
SEG ssp ( sp->GetStart(), sp->GetEnd() );
SEG ssn ( sn->GetStart(), sn->GetEnd() );
// Segments that are == 1 IU in length are approximately parallel with everything and their
// parallel projection is < 1 IU, leading to bad distance calculations
if( ssp.SquaredLength() > 1 && ssn.SquaredLength() > 1 && ssp.ApproxParallel(ssn) )
// Segments that are ~ 1 IU in length per side are approximately parallel (tolerance is 1 IU)
// with everything and their parallel projection is < 1 IU, leading to bad distance calculations
if( ssp.SquaredLength() > 2 && ssn.SquaredLength() > 2 && ssp.ApproxParallel(ssn) )
{
DIFF_PAIR_COUPLED_SEGMENTS cpair;
bool coupled = commonParallelProjection( ssp, ssn, cpair.coupledP, cpair.coupledN );

Loading…
Cancel
Save