41 double ax0 = 0.0, ay0 = 0.0, ax1 = 10.0, ay1 = 0.0;
42 GCS::Point a0{ &ax0, &ay0 };
43 GCS::Point a1{ &ax1, &ay1 };
49 double bx0 = 1.0, by0 = 5.0, bx1 = 9.0, by1 = 7.0;
50 GCS::Point b0{ &bx0, &by0 };
51 GCS::Point b1{ &bx1, &by1 };
62 sys.addConstraintParallel( lineB, lineA, tag++ );
63 sys.addConstraintP2PDistance( b0, b1, &length, tag++ );
64 sys.addConstraintCoordinateX( b0, &pinX, tag++ );
65 sys.addConstraintCoordinateY( b0, &pinY, tag++ );
67 GCS::VEC_pD unknowns{ &bx0, &by0, &bx1, &by1 };
68 sys.declareUnknowns( unknowns );
71 int ret = sys.solve();
74 BOOST_TEST_INFO(
"solve() returned " << ret <<
" dof=" << sys.dofsNumber() );
78 BOOST_CHECK_SMALL( by1 - by0, 1e-6 );
81 double dx = bx1 - bx0, dy = by1 - by0;
82 BOOST_CHECK_SMALL( std::sqrt( dx * dx + dy * dy ) - length, 1e-6 );
85 BOOST_CHECK_SMALL( bx0 - pinX, 1e-6 );
86 BOOST_CHECK_SMALL( by0 - pinY, 1e-6 );
BOOST_CHECK_EQUAL(result, "25.4")