49 BOOST_CHECK( result );
50 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 0 ),
"Expected: " <<
VECTOR2I( 5, 0 ) <<
" Actual: " << ptA );
51 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 15, 0 ),
"Expected: " <<
VECTOR2I( 15, 0 ) <<
" Actual: " << ptB );
62 BOOST_CHECK( result );
64 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 0 ),
"Expected: " <<
VECTOR2I( 5, 0 ) <<
" Actual: " << ptA );
65 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 10, 0 ),
"Expected: " <<
VECTOR2I( 10, 0 ) <<
" Actual: " << ptB );
76 BOOST_CHECK( result );
77 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 0 ),
"Expected: " <<
VECTOR2I( 5, 0 ) <<
" Actual: " << ptA );
78 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 1, 0 ),
"Expected: " <<
VECTOR2I( 1, 0 ) <<
" Actual: " << ptB );
90 BOOST_CHECK( result );
91 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( -7, 5 ),
"Expected: " <<
VECTOR2I( -7, 5 ) <<
" Actual: " << ptA );
92 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 0, 5 ),
"Expected: " <<
VECTOR2I( 0, 5 ) <<
" Actual: " << ptB );
103 BOOST_CHECK( result );
107 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 3, 5 ),
"Expected: " <<
VECTOR2I( 3, 5 ) <<
" Actual: " << ptA );
108 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 0, 5 ),
"Expected: " <<
VECTOR2I( 0, 5 ) <<
" Actual: " << ptB );
120 BOOST_CHECK( result );
121 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 0, 3 ),
"Expected: " <<
VECTOR2I( 0, 3 ) <<
" Actual: " << ptA );
122 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 0, 0 ),
"Expected: " <<
VECTOR2I( 0, 0 ) <<
" Actual: " << ptB );
133 BOOST_CHECK( result );
135 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 0, 3 ),
"Expected: " <<
VECTOR2I( 0, 3 ) <<
" Actual: " << ptA );
136 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 0, 0 ),
"Expected: " <<
VECTOR2I( 0, 0 ) <<
" Actual: " << ptB );
148 BOOST_CHECK( result );
149 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 5 ),
"Expected: " <<
VECTOR2I( 5, 5 ) <<
" Actual: " << ptA );
150 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 10, 5 ),
"Expected: " <<
VECTOR2I( 10, 5 ) <<
" Actual: " << ptB );
161 BOOST_CHECK( result );
162 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 5 ),
"Expected: " <<
VECTOR2I( 5, 5 ) <<
" Actual: " << ptA );
163 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 7, 7 ),
"Expected: " <<
VECTOR2I( 7, 7 ) <<
" Actual: " << ptB );
181 BOOST_CHECK( result );
182 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 10, 5 ),
"Expected: " <<
VECTOR2I( 10, 5 ) <<
" Actual: " << ptA );
183 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 10, 5 ),
"Expected: " <<
VECTOR2I( 10, 5 ) <<
" Actual: " << ptB );
198 BOOST_CHECK( result );
199 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 10, 0 ),
"Expected: " <<
VECTOR2I( 10, 0 ) <<
" Actual: " << ptA );
200 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 10, 10 ),
"Expected: " <<
VECTOR2I( 10, 10 ) <<
" Actual: " << ptB );
213 BOOST_CHECK( result );
215 BOOST_CHECK( ptA.
x <= 10 && ptA.
x >= 0 );
216 BOOST_CHECK( ptB.
x >= 15 && ptB.
x <= 25 );
228 BOOST_CHECK( result );
230 BOOST_CHECK( ptA.
y >= 0 );
232 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 5, 7 ),
"Expected: " <<
VECTOR2I( 5, 7 ) <<
" Actual: " << ptB );
244 BOOST_CHECK( result );
246 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 1 ),
"Expected: " <<
VECTOR2I( 5, 1 ) <<
" Actual: " << ptA );
247 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 5, 4 ),
"Expected: " <<
VECTOR2I( 5, 4 ) <<
" Actual: " << ptB );
258 BOOST_CHECK( result );
259 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 2 ),
"Expected: " <<
VECTOR2I( 5, 2 ) <<
" Actual: " << ptA );
260 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 5, 7 ),
"Expected: " <<
VECTOR2I( 5, 7 ) <<
" Actual: " << ptB );
274 bool result = compoundA.
NearestPoints( &compoundB, ptA, ptB );
276 BOOST_CHECK( result );
278 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 10, 0 ),
"Expected: " <<
VECTOR2I( 10, 0 ) <<
" Actual: " << ptA );
279 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 17, 0 ),
"Expected: " <<
VECTOR2I( 17, 0 ) <<
" Actual: " << ptB );
297 BOOST_CHECK( result );
298 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 12, 5 ),
"Expected: " <<
VECTOR2I( 12, 5 ) <<
" Actual: " << ptB );
310 BOOST_CHECK( result );
311 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 10, 5 ),
"Expected: " <<
VECTOR2I( 10, 5 ) <<
" Actual: " << ptA );
312 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 15, 5 ),
"Expected: " <<
VECTOR2I( 15, 5 ) <<
" Actual: " << ptB );
327 BOOST_CHECK( result );
328 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 0 ),
"Expected: " <<
VECTOR2I( 5, 0 ) <<
" Actual: " << ptA );
329 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 10, 0 ),
"Expected: " <<
VECTOR2I( 10, 0 ) <<
" Actual: " << ptB );
344 BOOST_CHECK( result );
345 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 11, 1 ),
"Expected: " <<
VECTOR2I( 11, 1 ) <<
" Actual: " << ptA );
346 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 15, 5 ),
"Expected: " <<
VECTOR2I( 15, 5 ) <<
" Actual: " << ptB );
361 BOOST_CHECK( result );
362 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 3, 0 ),
"Expected: " <<
VECTOR2I( 3, 0 ) <<
" Actual: " << ptA );
363 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 10, 0 ),
"Expected: " <<
VECTOR2I( 10, 0 ) <<
" Actual: " << ptB );
375 BOOST_CHECK( result );
376 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 10, 0 ),
"Expected: " <<
VECTOR2I( 10, 0 ) <<
" Actual: " << ptA );
377 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 50, 2 ),
"Expected: " <<
VECTOR2I( 50, 2 ) <<
" Actual: " << ptB );
388 bool result = arc.
NearestPoints( segment, ptA, ptB, distSq );
390 BOOST_CHECK( result );
392 BOOST_CHECK( ptA.
x >= 0 );
393 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 15, 10 ),
"Expected: " <<
VECTOR2I( 15, 10 ) <<
" Actual: " << ptB );
409 BOOST_CHECK( result );
411 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 5 ),
"Expected: " <<
VECTOR2I( 5, 5 ) <<
" Actual: " << ptA );
412 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 5, 10 ),
"Expected: " <<
VECTOR2I( 5, 10 ) <<
" Actual: " << ptB );
424 BOOST_CHECK( result );
427 int expectedDistance = 20 - 5 - 3;
428 int actualDistance = (ptB - ptA).EuclideanNorm();
430 BOOST_CHECK_MESSAGE( actualDistance == expectedDistance,
431 "Expected distance: " << expectedDistance <<
" Actual: " << actualDistance );
447 BOOST_CHECK( result1 && result2 );
450 int dist1 = (ptB1 - ptA1).EuclideanNorm();
451 int dist2 = (ptB2 - ptA2).EuclideanNorm();
453 BOOST_CHECK_MESSAGE( dist1 == dist2,
"Distance A->B: " << dist1 <<
" Distance B->A: " << dist2 );
456 BOOST_CHECK_MESSAGE( ptA1 == ptB2,
"Expected ptA1 == ptB2. ptA1: " << ptA1 <<
" ptB2: " << ptB2 );
457 BOOST_CHECK_MESSAGE( ptB1 == ptA2,
"Expected ptB1 == ptA2. ptB1: " << ptB1 <<
" ptA2: " << ptA2 );
468 BOOST_CHECK( result );
471 int minDist = (ptB - ptA).EuclideanNorm();
474 for(
int x = 0; x <= 10; x += 2 )
479 int testDist = (circleClosest - testPt).EuclideanNorm();
481 BOOST_CHECK_MESSAGE( minDist <= testDist,
482 "Found shorter distance at x=" << x <<
": " << testDist <<
" vs " << minDist );
500 BOOST_CHECK( result );
501 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 15, 12 ),
"Expected: " <<
VECTOR2I( 15, 12 ) <<
" Actual: " << ptB );
513 BOOST_CHECK( result );
514 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 0, 5 ),
"Expected: " <<
VECTOR2I( 0, 5 ) <<
" Actual: " << ptA );
515 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 3, 5 ),
"Expected: " <<
VECTOR2I( 3, 5 ) <<
" Actual: " << ptB );
526 BOOST_CHECK( result );
527 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 7, 5 ),
"Expected: " <<
VECTOR2I( 7, 5 ) <<
" Actual: " << ptA );
528 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 5, 5 ),
"Expected: " <<
VECTOR2I( 5, 5 ) <<
" Actual: " << ptB );
541 BOOST_CHECK( !result );
553 BOOST_CHECK( result );
554 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( -7, -4 ),
"Expected: " <<
VECTOR2I( -7, -4 ) <<
" Actual: " << ptA );
555 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 0, -2 ),
"Expected: " <<
VECTOR2I( 0, -2 ) <<
" Actual: " << ptB );
567 BOOST_CHECK( result );
569 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 8, 5 ),
"Expected: " <<
VECTOR2I( 8, 5 ) <<
" Actual: " << ptA );
570 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 8, 5 ),
"Expected: " <<
VECTOR2I( 8, 5 ) <<
" Actual: " << ptB );
581 BOOST_CHECK( result );
582 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 0, 0 ),
"Expected: " <<
VECTOR2I( 0, 0 ) <<
" Actual: " << ptA );
583 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 5, 0 ),
"Expected: " <<
VECTOR2I( 5, 0 ) <<
" Actual: " << ptB );
594 BOOST_CHECK( result );
595 BOOST_CHECK_MESSAGE( ptA ==
VECTOR2I( 5, 0 ),
"Expected: " <<
VECTOR2I( 5, 0 ) <<
" Actual: " << ptA );
596 BOOST_CHECK_MESSAGE( ptB ==
VECTOR2I( 5, 0 ),
"Expected: " <<
VECTOR2I( 5, 0 ) <<
" Actual: " << ptB );
bool NearestPoints(const SHAPE_ARC &aArc, VECTOR2I &aPtA, VECTOR2I &aPtB, int64_t &aDistSq) const
Compute closest points between this arc and aArc.
const VECTOR2I GetCenter() const
void AddShape(SHAPE *aShape)
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
void Append(int aX, int aY, bool aAllowDuplication=false)
Append a new point at the end of the line chain.
Represent a set of closed polygons.
int Append(int x, int y, int aOutline=-1, int aHole=-1, bool aAllowDuplication=false)
Appends a vertex at the end of the given outline/hole (default: the last outline)
int NewOutline()
Creates a new empty polygon in the set and returns its index.
bool NearestPoints(const SHAPE *aOther, VECTOR2I &aPtThis, VECTOR2I &aPtOther) const
Return the two points that mark the closest distance between this shape and aOther.
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_AUTO_TEST_SUITE_END()
const SHAPE_LINE_CHAIN chain
SHAPE_CIRCLE circle(c.m_circle_center, c.m_circle_radius)
BOOST_AUTO_TEST_CASE(NearestPoints_CircleToCircle_Separate)
VECTOR2< int32_t > VECTOR2I