209    Pgm().
App().SetTopWindow( frame );      
 
  214        double cx, cy, sx, sy, ca, w;
 
  217    const ARC_DATA test_data [] =
 
  219        {73.843527, 74.355869, 71.713528, 72.965869, -76.36664803, 0.2},
 
  220        {71.236473, 74.704131, 73.366472, 76.094131, -76.36664803, 0.2},
 
  221        {82.542335, 74.825975, 80.413528, 73.435869, -76.4, 0.2},
 
  222        {76.491192, 73.839894, 78.619999, 75.23, -76.4, 0.2},
 
  223        {89.318807, 74.810106, 87.19, 73.42, -76.4, 0.2},
 
  224        {87.045667, 74.632941, 88.826472, 75.794131, -267.9, 0.2},
 
  225        {94.665667, 73.772941, 96.446472, 74.934131, -267.9, 0.2},
 
  226        {94.750009, 73.74012, 93.6551, 73.025482, -255.5, 0.2},
 
  227        {72.915251, 80.493054, 73.570159, 81.257692, -260.5, 0.2}, 
 
  228        {73.063537, 82.295989, 71.968628, 81.581351, -255.5, 0.2},
 
  229        {79.279991, 80.67988, 80.3749, 81.394518, -255.5, 0.2},
 
  230        {79.279991, 80.67988, 80.3749, 81.694518, -255.5, 0.2 },
 
  231        {88.495265, 81.766089, 90.090174, 82.867869, -255.5, 0.2},
 
  232        {86.995265, 81.387966, 89.090174, 82.876887, -255.5, 0.2},
 
  233        {96.149734, 81.792126, 94.99, 83.37, -347.2, 0.2},
 
  234        {94.857156, 81.240589, 95.91, 83.9, -288.5, 0.2},
 
  235        {72.915251, 86.493054, 73.970159, 87.257692, -260.5, 0.2}, 
 
  236        {73.063537, 88.295989, 71.968628, 87.581351, -255.5, 0.2},
 
  237        {78.915251, 86.393054, 79.970159, 87.157692, 99.5, 0.2}, 
 
  238        {79.063537, 88.295989, 77.968628, 87.581351, -255.5, 0.2},
 
  239        {85.915251, 86.993054, 86.970159, 87.757692, 99.5, 0.2}, 
 
  240        {86.063537, 88.295989, 84.968628, 87.581351, -255.5, 0.2},
 
  241        {94.6551, 88.295989, 95.6551, 88.295989, 90.0, 0.2 }, 
 
  242        {94.6551, 88.295989, 95.8551, 88.295989, 90.0, 0.2 },
 
  243        {73.77532, 93.413654, 75.70532, 93.883054, 60.0, 0.1 }, 
 
  244        {73.86532, 93.393054, 75.86532, 93.393054, 90.0, 0.3 },
 
  245        {79.87532, 93.413654, 81.64532, 94.113054, 60.0, 0.1 }, 
 
  246        {79.87532, 93.413654, 81.86532, 93.393054, 90.0, 0.3 }
 
  254    overlay->SetLineWidth( 10000 );
 
  256    std::vector<SHAPE_ARC> arcs;
 
  257    int n_arcs = 
sizeof( test_data ) / 
sizeof( ARC_DATA );
 
  261    for( 
int i = 0; i < n_arcs; i++ )
 
  263        const ARC_DATA& d = test_data[i];
 
  269        arcs.push_back( arc );
 
  320    printf(
"Read %zu arcs\n", arcs.size() );
 
  325    for( 
int i = 0; i < arcs.size(); i+= 2 )
 
  328        std::vector<VECTOR2I> ips;
 
  329        bool collides = 
collideArc2Arc( arcs[i], arcs[i+1], 0, closestDist );
 
  330        int ni = arcs[i].Intersect( arcs[i+1], &ips );
 
  332        overlay->SetLineWidth( 10000.0 );
 
  335        for( 
int j = 0; j < ni; j++ )
 
  336            overlay->AnnotatedPoint( ips[j], arcs[i].GetWidth() );
 
  341            overlay->Line( closestDist.
A, closestDist.
B );
 
  342            overlay->SetLineWidth( 10000 );
 
  343            overlay->SetGlyphSize( { 100000, 100000 } );
 
  344            overlay->BitmapText( wxString::Format( 
"dist=%d", closestDist.
Length() ),
 
  345                                 closestDist.
A + 
VECTOR2I( 0, -arcs[i].GetWidth() ),
 
  349        overlay->SetLineWidth( 10000 );
 
  351        overlay->AnnotatedPoint( arcs[i].GetP0(), arcs[i].GetWidth() / 2 );
 
  352        overlay->AnnotatedPoint( arcs[i + 1].GetP0(), arcs[i + 1].GetWidth() / 2 );
 
  353        overlay->AnnotatedPoint( arcs[i].GetArcMid(), arcs[i].GetWidth() / 2 );
 
  354        overlay->AnnotatedPoint( arcs[i + 1].GetArcMid(), arcs[i + 1].GetWidth() / 2 );
 
  355        overlay->AnnotatedPoint( arcs[i].GetP1(), arcs[i].GetWidth() / 2 );
 
  356        overlay->AnnotatedPoint( arcs[i + 1].GetP1(), arcs[i + 1].GetWidth() / 2 );
 
  367    overlay->AnnotatedPolyset( pad1Outline, 
"Raw Pads" );
 
  369    overlay->AnnotatedPolyset( pad2Outline );
 
  371    overlay->AnnotatedPolyset( xorPad1ToPad2, 
"XOR Pads" );
 
  372    overlay->AnnotatedPolyset( andPad1ToPad2, 
"AND Pads" );
 
  379    int dist = std::numeric_limits<int>::max();
 
  381    collide( pad1Outline, pad2Outline.
Outline( 0 ), dist, &dist, &pt1 );
 
  383    wxLogDebug( 
tracePnsPlayground, wxS( 
"Nearest distance between pad 1 and pad 2 is %0.6f mm " 
  384                                         "at X=%0.6f mm,  Y=%0.6f mm." ),
 
  389    overlay->SetGlyphSize( { 100000, 100000 } );
 
  390    overlay->BitmapText( wxString::Format( 
"dist=%0.3f mm", 
pcbIUScale.IUTomm( dist ) ),