File indexing completed on 2026-05-29 07:34:47
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <boost/test/execution_monitor.hpp>
0010 #include <boost/test/tools/assertion_result.hpp>
0011 #include <boost/test/unit_test.hpp>
0012
0013 #include "Acts/Geometry/GeometryContext.hpp"
0014 #include "Acts/Surfaces/AnnulusBounds.hpp"
0015 #include "Acts/Surfaces/DiscSurface.hpp"
0016 #include "Acts/Surfaces/PlanarBounds.hpp"
0017 #include "Acts/Surfaces/PlaneSurface.hpp"
0018 #include "Acts/Surfaces/RectangleBounds.hpp"
0019 #include "Acts/Surfaces/RegularSurface.hpp"
0020 #include "Acts/Surfaces/TrapezoidBounds.hpp"
0021
0022 #include <iostream>
0023 #include <limits>
0024
0025 using namespace Acts;
0026
0027 namespace ActsTests {
0028
0029 auto gctx = GeometryContext::dangerouslyDefaultConstruct();
0030
0031 std::size_t matrixResolution = 80;
0032
0033 struct TestMatrix : public std::vector<std::vector<std::uint8_t>> {
0034 TestMatrix()
0035 : std::vector<std::vector<std::uint8_t>>(
0036 matrixResolution, std::vector<std::uint8_t>(matrixResolution, 0)) {
0037 };
0038 };
0039
0040 std::pair<Vector2, Vector2> boundingBox(const RegularSurface& surface,
0041 double relMargin) {
0042 Vector2 min{std::numeric_limits<double>::max(),
0043 std::numeric_limits<double>::max()};
0044 Vector2 max{std::numeric_limits<double>::lowest(),
0045 std::numeric_limits<double>::lowest()};
0046
0047 std::vector<Vector2> vertices;
0048 if (const auto* pBounds =
0049 dynamic_cast<const PlanarBounds*>(&surface.bounds());
0050 pBounds) {
0051 vertices = pBounds->vertices();
0052 } else if (const auto* dBounds =
0053 dynamic_cast<const DiscBounds*>(&surface.bounds());
0054 dBounds) {
0055 vertices = dBounds->vertices();
0056 } else {
0057 throw std::runtime_error("Unsupported bounds type");
0058 }
0059
0060 for (const auto& vertex : vertices) {
0061 min = min.cwiseMin(vertex);
0062 max = max.cwiseMax(vertex);
0063 }
0064
0065 Vector2 size = max - min;
0066
0067 min = min - relMargin * size;
0068 max = max + relMargin * size;
0069
0070 Vector3 min3 =
0071 surface.localToGlobalTransform(gctx) * Vector3{min[0], min[1], 0};
0072 Vector3 max3 =
0073 surface.localToGlobalTransform(gctx) * Vector3{max[0], max[1], 0};
0074
0075 return {min3.head<2>(), max3.head<2>()};
0076 }
0077
0078 TestMatrix makeTestMatrix(const RegularSurface& surface,
0079 const BoundaryTolerance& tolerance,
0080 double relMargin = 0.1) {
0081 auto [min, max] = boundingBox(surface, relMargin);
0082 Vector2 delta = max - min;
0083
0084 TestMatrix testMatrix;
0085
0086 Vector2 step = delta / (matrixResolution - 1);
0087
0088 for (std::size_t i = 0; i < matrixResolution; ++i) {
0089 for (std::size_t j = 0; j < matrixResolution; ++j) {
0090 Vector2 query = min + Vector2(j, i).cwiseProduct(step);
0091 Vector2 local =
0092 surface.globalToLocal(gctx, Vector3{query[0], query[1], 0}).value();
0093 bool inside = surface.bounds().inside(local, tolerance);
0094 testMatrix.at(i).at(j) = inside ? 1 : 0;
0095 }
0096 }
0097
0098 return testMatrix;
0099 }
0100
0101 void printTestMatrix(const TestMatrix& matrix) {
0102 for (const auto& row : matrix) {
0103 for (std::uint8_t inside : row) {
0104 std::cout << (inside == 1 ? "X" : ".");
0105 }
0106 std::cout << std::endl;
0107 }
0108 }
0109
0110 TestMatrix parseMatrix(const std::string& matrix) {
0111 TestMatrix result;
0112
0113 std::size_t i = 0;
0114 std::size_t j = 0;
0115
0116 for (auto it = matrix.find_first_not_of("\n "); it < matrix.size(); it++) {
0117 const char c = matrix.at(it);
0118 if (c == ' ') {
0119 continue;
0120 }
0121 if (c == '\n') {
0122 i += 1;
0123 j = 0;
0124 continue;
0125 }
0126 if (c == '.') {
0127 result.at(i).at(j) = 0;
0128 } else {
0129 result.at(i).at(j) = 1;
0130 }
0131 j += 1;
0132 }
0133
0134 return result;
0135 }
0136
0137 void printMatrixDiff(const TestMatrix& ref, const TestMatrix& act) {
0138 static const std::string s_ref = "-";
0139 static const std::string s_act = "+";
0140 static const std::string s_in = "X";
0141 static const std::string s_out = ".";
0142
0143 bool tty = isatty(fileno(stdout)) != 0;
0144
0145
0146
0147 bool refEmpty = std::ranges::all_of(ref, [](const auto& row) {
0148 return std::ranges::all_of(row, [](const auto& v) { return v == 0; });
0149 });
0150
0151 auto red = [tty](const std::string& s) {
0152 if (!tty) {
0153 return s;
0154 }
0155 return "\033[1;31m" + s + "\033[0m";
0156 };
0157
0158 auto green = [tty](const std::string& s) {
0159 if (!tty) {
0160 return s;
0161 }
0162 return "\033[1;32m" + s + "\033[0m";
0163 };
0164
0165 for (std::size_t i = 0; i <= matrixResolution - 1; ++i) {
0166 for (std::size_t j = 0; j <= matrixResolution - 1; ++j) {
0167 bool insideRef = ref.at(i).at(j) == 1;
0168 bool insideAct = act.at(i).at(j) == 1;
0169
0170 if (refEmpty) {
0171 std::cout << (insideAct ? s_in : s_out);
0172 continue;
0173 }
0174
0175 if (!insideRef && !insideAct) {
0176 std::cout << s_out;
0177 }
0178 if (insideRef && !insideAct) {
0179 std::cout << red(s_ref);
0180 }
0181 if (!insideRef && insideAct) {
0182 std::cout << green(s_act);
0183 }
0184 if (insideRef && insideAct) {
0185 std::cout << s_in;
0186 }
0187 }
0188 std::cout << std::endl;
0189 }
0190
0191 if (!refEmpty) {
0192 std::cout << red(s_ref + ": inside reference but not inside actual")
0193 << std::endl;
0194 std::cout << green(s_act + ": not inside reference but inside actual")
0195 << std::endl;
0196 std::cout << s_in + ": inside both" << std::endl;
0197 std::cout << s_out + ": outside both" << std::endl;
0198 } else {
0199 std::cout << red("REFERENCE IS EMPTY") << std::endl;
0200 std::cout << s_in + ": inside actual" << std::endl;
0201 std::cout << s_out + ": outside actual" << std::endl;
0202 }
0203 }
0204
0205 boost::test_tools::predicate_result checkMatrices(const TestMatrix& val,
0206 const TestMatrix& ref) {
0207 if (val == ref) {
0208 return true;
0209 }
0210 printMatrixDiff(ref, val);
0211 boost::test_tools::predicate_result res(false);
0212 res.message() << "Actual test matrix differs from reference";
0213 return res;
0214 }
0215
0216 BOOST_AUTO_TEST_SUITE(SurfacesSuite)
0217
0218 BOOST_AUTO_TEST_CASE(Rectangle) {
0219 auto bounds = std::make_shared<RectangleBounds>(10, 20);
0220 auto surface =
0221 Surface::makeShared<PlaneSurface>(Transform3::Identity(), bounds);
0222
0223 BOOST_TEST_CONTEXT("None") {
0224 std::string reference = R"X(
0225 ................................................................................
0226 ................................................................................
0227 ................................................................................
0228 ................................................................................
0229 ................................................................................
0230 ................................................................................
0231 ................................................................................
0232 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0233 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0234 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0235 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0236 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0237 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0238 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0239 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0240 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0241 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0242 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0243 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0244 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0245 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0246 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0247 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0248 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0249 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0250 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0251 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0252 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0253 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0254 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0255 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0256 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0257 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0258 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0259 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0260 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0261 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0262 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0263 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0264 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0265 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0266 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0267 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0268 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0269 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0270 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0271 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0272 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0273 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0274 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0275 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0276 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0277 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0278 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0279 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0280 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0281 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0282 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0283 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0284 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0285 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0286 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0287 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0288 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0289 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0290 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0291 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0292 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0293 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0294 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0295 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0296 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0297 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0298 ................................................................................
0299 ................................................................................
0300 ................................................................................
0301 ................................................................................
0302 ................................................................................
0303 ................................................................................
0304 ................................................................................
0305 )X";
0306
0307 BoundaryTolerance tolerance = BoundaryTolerance::None();
0308 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
0309 parseMatrix(reference)));
0310 }
0311
0312 BOOST_TEST_CONTEXT("AbsoluteEuclidean(2)") {
0313 std::string reference = R"X(
0314 ................................................................................
0315 ................................................................................
0316 ................................................................................
0317 ................................................................................
0318 ................................................................................
0319 ................................................................................
0320 ................................................................................
0321 ................................................................................
0322 ................................................................................
0323 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
0324 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0325 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0326 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0327 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0328 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0329 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0330 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0331 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0332 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0333 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0334 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0335 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0336 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0337 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0338 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0339 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0340 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0341 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0342 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0343 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0344 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0345 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0346 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0347 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0348 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0349 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0350 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0351 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0352 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0353 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0354 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0355 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0356 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0357 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0358 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0359 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0360 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0361 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0362 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0363 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0364 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0365 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0366 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0367 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0368 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0369 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0370 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0371 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0372 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0373 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0374 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0375 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0376 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0377 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0378 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0379 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0380 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0381 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0382 ......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......
0383 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0384 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
0385 ................................................................................
0386 ................................................................................
0387 ................................................................................
0388 ................................................................................
0389 ................................................................................
0390 ................................................................................
0391 ................................................................................
0392 ................................................................................
0393 ................................................................................
0394 )X";
0395
0396 BoundaryTolerance tolerance = BoundaryTolerance::AbsoluteEuclidean(2);
0397 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance, 0.2),
0398 parseMatrix(reference)));
0399 }
0400
0401 BOOST_TEST_CONTEXT("AbsoluteEuclidean(-2)") {
0402 std::string reference = R"X(
0403 ................................................................................
0404 ................................................................................
0405 ................................................................................
0406 ................................................................................
0407 ................................................................................
0408 ................................................................................
0409 ................................................................................
0410 ................................................................................
0411 ................................................................................
0412 ................................................................................
0413 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0414 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0415 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0416 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0417 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0418 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0419 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0420 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0421 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0422 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0423 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0424 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0425 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0426 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0427 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0428 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0429 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0430 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0431 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0432 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0433 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0434 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0435 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0436 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0437 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0438 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0439 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0440 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0441 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0442 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0443 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0444 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0445 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0446 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0447 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0448 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0449 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0450 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0451 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0452 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0453 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0454 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0455 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0456 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0457 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0458 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0459 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0460 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0461 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0462 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0463 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0464 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0465 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0466 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0467 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0468 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0469 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0470 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0471 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0472 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0473 ................................................................................
0474 ................................................................................
0475 ................................................................................
0476 ................................................................................
0477 ................................................................................
0478 ................................................................................
0479 ................................................................................
0480 ................................................................................
0481 ................................................................................
0482 ................................................................................
0483 )X";
0484
0485 BoundaryTolerance tolerance = BoundaryTolerance::AbsoluteEuclidean(-2);
0486 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
0487 parseMatrix(reference)));
0488 }
0489
0490 BOOST_TEST_CONTEXT("Chi2Bound(eye, 1)") {
0491 std::string reference = R"X(
0492 ................................................................................
0493 ................................................................................
0494 ................................................................................
0495 ................................................................................
0496 ................................................................................
0497 ................................................................................
0498 ................................................................................
0499 ................................................................................
0500 ................................................................................
0501 ................................................................................
0502 ................................................................................
0503 ................................................................................
0504 ................................................................................
0505 ................................................................................
0506 ................................................................................
0507 ................................................................................
0508 ................................................................................
0509 ................................................................................
0510 ................................................................................
0511 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0512 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0513 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0514 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0515 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0516 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0517 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0518 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0519 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0520 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0521 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0522 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0523 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0524 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0525 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0526 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0527 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0528 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0529 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0530 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0531 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0532 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0533 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0534 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0535 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0536 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0537 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0538 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0539 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0540 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0541 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0542 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0543 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0544 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0545 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0546 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0547 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0548 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0549 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0550 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0551 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0552 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0553 ................................................................................
0554 ................................................................................
0555 ................................................................................
0556 ................................................................................
0557 ................................................................................
0558 ................................................................................
0559 ................................................................................
0560 ................................................................................
0561 ................................................................................
0562 ................................................................................
0563 ................................................................................
0564 ................................................................................
0565 ................................................................................
0566 ................................................................................
0567 ................................................................................
0568 ................................................................................
0569 ................................................................................
0570 ................................................................................
0571 ................................................................................
0572 )X";
0573
0574 BoundaryTolerance tolerance =
0575 BoundaryTolerance::Chi2Bound(SquareMatrix2::Identity(), 2);
0576 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance, 0.5),
0577 parseMatrix(reference)));
0578 }
0579
0580 BOOST_TEST_CONTEXT("Chi2Bound(eye, -1)") {
0581 std::string reference = R"X(
0582 ................................................................................
0583 ................................................................................
0584 ................................................................................
0585 ................................................................................
0586 ................................................................................
0587 ................................................................................
0588 ................................................................................
0589 ................................................................................
0590 ................................................................................
0591 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0592 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0593 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0594 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0595 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0596 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0597 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0598 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0599 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0600 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0601 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0602 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0603 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0604 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0605 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0606 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0607 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0608 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0609 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0610 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0611 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0612 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0613 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0614 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0615 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0616 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0617 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0618 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0619 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0620 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0621 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0622 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0623 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0624 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0625 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0626 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0627 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0628 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0629 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0630 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0631 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0632 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0633 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0634 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0635 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0636 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0637 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0638 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0639 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0640 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0641 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0642 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0643 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0644 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0645 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0646 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0647 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0648 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0649 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0650 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0651 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0652 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0653 ................................................................................
0654 ................................................................................
0655 ................................................................................
0656 ................................................................................
0657 ................................................................................
0658 ................................................................................
0659 ................................................................................
0660 ................................................................................
0661 ................................................................................
0662 )X";
0663
0664 BoundaryTolerance tolerance =
0665 BoundaryTolerance::Chi2Bound(SquareMatrix2::Identity(), -2);
0666 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
0667 parseMatrix(reference)));
0668 }
0669 }
0670
0671 BOOST_AUTO_TEST_CASE(Trapezoid) {
0672 auto bounds = std::make_shared<TrapezoidBounds>(10, 20, 5, 0.1);
0673 auto surface =
0674 Surface::makeShared<PlaneSurface>(Transform3::Identity(), bounds);
0675
0676 BOOST_TEST_CONTEXT("None") {
0677 std::string reference = R"X(
0678 ................................................................................
0679 ................................................................................
0680 ................................................................................
0681 ................................................................................
0682 ................................................................................
0683 ................................................................................
0684 ................................................................................
0685 .....................................................XX.........................
0686 ..................................................XXXXX.........................
0687 ...............................................XXXXXXXXX........................
0688 ............................................XXXXXXXXXXXX........................
0689 ........................................XXXXXXXXXXXXXXXXX.......................
0690 .....................................XXXXXXXXXXXXXXXXXXXX.......................
0691 ..................................XXXXXXXXXXXXXXXXXXXXXXX.......................
0692 ...............................XXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0693 ............................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0694 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0695 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0696 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0697 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0698 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0699 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0700 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0701 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0702 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0703 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0704 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0705 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0706 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0707 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0708 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0709 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
0710 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
0711 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
0712 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0713 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0714 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
0715 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
0716 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
0717 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0718 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0719 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0720 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
0721 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
0722 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0723 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0724 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0725 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0726 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0727 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
0728 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
0729 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
0730 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
0731 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0732 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
0733 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0734 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0735 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0736 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
0737 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
0738 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................................
0739 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................................
0740 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................................
0741 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................................
0742 .........XXXXXXXXXXXXXXXXXXXXXXXXX..............................................
0743 .........XXXXXXXXXXXXXXXXXXXXXX.................................................
0744 .........XXXXXXXXXXXXXXXXXXX....................................................
0745 .........XXXXXXXXXXXXXXXX.......................................................
0746 ........XXXXXXXXXXXXX...........................................................
0747 ........XXXXXXXXXX..............................................................
0748 ........XXXXXXX.................................................................
0749 .......XXXXX....................................................................
0750 .......X........................................................................
0751 ................................................................................
0752 ................................................................................
0753 ................................................................................
0754 ................................................................................
0755 ................................................................................
0756 ................................................................................
0757 ................................................................................
0758 )X";
0759 BoundaryTolerance tolerance = BoundaryTolerance::None();
0760 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
0761 parseMatrix(reference)));
0762 }
0763
0764 BOOST_TEST_CONTEXT("AbsoluteEuclidean(2)") {
0765 std::string reference = R"X(
0766 ................................................................................
0767 ................................................................................
0768 ................................................................................
0769 ...................................................XXX..........................
0770 ................................................XXXXXX..........................
0771 .............................................XXXXXXXXXX.........................
0772 .........................................XXXXXXXXXXXXXX.........................
0773 ......................................XXXXXXXXXXXXXXXXX.........................
0774 ...................................XXXXXXXXXXXXXXXXXXXXX........................
0775 ................................XXXXXXXXXXXXXXXXXXXXXXXX........................
0776 ............................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0777 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0778 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0779 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0780 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0781 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0782 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0783 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0784 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0785 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0786 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0787 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0788 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0789 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0790 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0791 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0792 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0793 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0794 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0795 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0796 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
0797 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
0798 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
0799 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0800 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
0801 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
0802 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
0803 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
0804 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0805 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0806 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
0807 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
0808 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
0809 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0810 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0811 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0812 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0813 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0814 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0815 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0816 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0817 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0818 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0819 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0820 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0821 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
0822 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0823 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0824 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
0825 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
0826 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
0827 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0828 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0829 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
0830 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............................
0831 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............................
0832 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................................
0833 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................................
0834 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................................
0835 .........XXXXXXXXXXXXXXXXXXXXXXXXXXX............................................
0836 .........XXXXXXXXXXXXXXXXXXXXXXXX...............................................
0837 .........XXXXXXXXXXXXXXXXXXXXX..................................................
0838 .........XXXXXXXXXXXXXXXXX......................................................
0839 ..........XXXXXXXXXXXXX.........................................................
0840 ..........XXXXXXXXXX............................................................
0841 ..........XXXXXXX...............................................................
0842 ...........XX...................................................................
0843 ................................................................................
0844 ................................................................................
0845 ................................................................................
0846 )X";
0847 BoundaryTolerance tolerance = BoundaryTolerance::AbsoluteEuclidean(2);
0848 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance, 0.2),
0849 parseMatrix(reference)));
0850 }
0851
0852 BOOST_TEST_CONTEXT("AbsoluteEuclidean(-2)") {
0853 std::string reference = R"X(
0854 ................................................................................
0855 ................................................................................
0856 ................................................................................
0857 ................................................................................
0858 ................................................................................
0859 ................................................................................
0860 ................................................................................
0861 ................................................................................
0862 ................................................................................
0863 ................................................................................
0864 ................................................................................
0865 ................................................................................
0866 ................................................................................
0867 ................................................................................
0868 ................................................................................
0869 ................................................................................
0870 ................................................................................
0871 ................................................................................
0872 ...................................................XXX..........................
0873 ................................................XXXXXXX.........................
0874 ............................................XXXXXXXXXXX.........................
0875 .........................................XXXXXXXXXXXXXX.........................
0876 ......................................XXXXXXXXXXXXXXXXXX........................
0877 ...................................XXXXXXXXXXXXXXXXXXXXX........................
0878 ...............................XXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0879 ............................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0880 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0881 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0882 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0883 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0884 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0885 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0886 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0887 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0888 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0889 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0890 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0891 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0892 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0893 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
0894 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0895 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0896 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0897 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0898 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
0899 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
0900 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0901 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
0902 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
0903 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
0904 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................................
0905 .................XXXXXXXXXXXXXXXXXXXXXXXXXX.....................................
0906 .................XXXXXXXXXXXXXXXXXXXXXXX........................................
0907 .................XXXXXXXXXXXXXXXXXXXX...........................................
0908 ................XXXXXXXXXXXXXXXXXX..............................................
0909 ................XXXXXXXXXXXXXX..................................................
0910 ................XXXXXXXXXXX.....................................................
0911 ...............XXXXXXXXX........................................................
0912 ...............XXXXXX...........................................................
0913 ...............XX...............................................................
0914 ................................................................................
0915 ................................................................................
0916 ................................................................................
0917 ................................................................................
0918 ................................................................................
0919 ................................................................................
0920 ................................................................................
0921 ................................................................................
0922 ................................................................................
0923 ................................................................................
0924 ................................................................................
0925 ................................................................................
0926 ................................................................................
0927 ................................................................................
0928 ................................................................................
0929 ................................................................................
0930 ................................................................................
0931 ................................................................................
0932 ................................................................................
0933 ................................................................................
0934 )X";
0935
0936 BoundaryTolerance tolerance = BoundaryTolerance::AbsoluteEuclidean(-2);
0937 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
0938 parseMatrix(reference)));
0939 }
0940
0941 BOOST_TEST_CONTEXT("Chi2Bound(eye, 1)") {
0942 std::string reference = R"X(
0943 ................................................................................
0944 ................................................................................
0945 ................................................................................
0946 ................................................................................
0947 ................................................................................
0948 ................................................................................
0949 ................................................................................
0950 ................................................................................
0951 ................................................................................
0952 ................................................................................
0953 ................................................................................
0954 ................................................................................
0955 ................................................................................
0956 ................................................................................
0957 ................................................................................
0958 ................................................................................
0959 ...............................................XXX..............................
0960 ............................................XXXXXX..............................
0961 ........................................XXXXXXXXXX..............................
0962 .....................................XXXXXXXXXXXXXX.............................
0963 ..................................XXXXXXXXXXXXXXXXX.............................
0964 ...............................XXXXXXXXXXXXXXXXXXXXX............................
0965 ............................XXXXXXXXXXXXXXXXXXXXXXXX............................
0966 ............................XXXXXXXXXXXXXXXXXXXXXXXX............................
0967 ............................XXXXXXXXXXXXXXXXXXXXXXXXX...........................
0968 ............................XXXXXXXXXXXXXXXXXXXXXXXXX...........................
0969 ...........................XXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
0970 ...........................XXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
0971 ...........................XXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
0972 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
0973 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
0974 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
0975 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
0976 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
0977 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0978 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
0979 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0980 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0981 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0982 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0983 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
0984 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0985 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0986 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0987 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0988 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0989 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0990 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0991 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0992 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0993 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
0994 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
0995 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
0996 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
0997 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
0998 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXX................................
0999 ...................XXXXXXXXXXXXXXXXXXXXXXXXXX...................................
1000 ...................XXXXXXXXXXXXXXXXXXXXXXX......................................
1001 ...................XXXXXXXXXXXXXXXXXXX..........................................
1002 ...................XXXXXXXXXXXXXXXX.............................................
1003 ...................XXXXXXXXXXXXX................................................
1004 ...................XXXXXXXXXX...................................................
1005 ...................XXXXXX.......................................................
1006 ....................XX..........................................................
1007 ................................................................................
1008 ................................................................................
1009 ................................................................................
1010 ................................................................................
1011 ................................................................................
1012 ................................................................................
1013 ................................................................................
1014 ................................................................................
1015 ................................................................................
1016 ................................................................................
1017 ................................................................................
1018 ................................................................................
1019 ................................................................................
1020 ................................................................................
1021 ................................................................................
1022 ................................................................................
1023 )X";
1024
1025 BoundaryTolerance tolerance =
1026 BoundaryTolerance::Chi2Bound(SquareMatrix2::Identity(), 2);
1027 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance, 0.5),
1028 parseMatrix(reference)));
1029 }
1030
1031 BOOST_TEST_CONTEXT("Chi2Bound(eye, -1)") {
1032 std::string reference = R"X(
1033 ................................................................................
1034 ................................................................................
1035 ................................................................................
1036 ................................................................................
1037 ................................................................................
1038 ................................................................................
1039 ................................................................................
1040 ................................................................................
1041 ................................................................................
1042 ................................................................................
1043 ................................................................................
1044 ................................................................................
1045 ................................................................................
1046 ................................................................................
1047 ................................................................................
1048 ...................................................XXX..........................
1049 ................................................XXXXXXX.........................
1050 ............................................XXXXXXXXXXX.........................
1051 .........................................XXXXXXXXXXXXXXX........................
1052 ......................................XXXXXXXXXXXXXXXXXX........................
1053 ...................................XXXXXXXXXXXXXXXXXXXXX........................
1054 ................................XXXXXXXXXXXXXXXXXXXXXXXXX.......................
1055 ............................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1056 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1057 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1058 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1059 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1060 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1061 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1062 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1063 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1064 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1065 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1066 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1067 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1068 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1069 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1070 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1071 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1072 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1073 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1074 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1075 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1076 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1077 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1078 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1079 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
1080 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1081 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1082 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1083 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1084 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
1085 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
1086 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................................
1087 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................................
1088 ...............XXXXXXXXXXXXXXXXXXXXXXXXX........................................
1089 ..............XXXXXXXXXXXXXXXXXXXXXXX...........................................
1090 ..............XXXXXXXXXXXXXXXXXXXX..............................................
1091 ..............XXXXXXXXXXXXXXXX..................................................
1092 ..............XXXXXXXXXXXXX.....................................................
1093 .............XXXXXXXXXXX........................................................
1094 .............XXXXXXXX...........................................................
1095 .............XXXX...............................................................
1096 .............X..................................................................
1097 ................................................................................
1098 ................................................................................
1099 ................................................................................
1100 ................................................................................
1101 ................................................................................
1102 ................................................................................
1103 ................................................................................
1104 ................................................................................
1105 ................................................................................
1106 ................................................................................
1107 ................................................................................
1108 ................................................................................
1109 ................................................................................
1110 ................................................................................
1111 ................................................................................
1112 ................................................................................
1113 )X";
1114
1115 BoundaryTolerance tolerance =
1116 BoundaryTolerance::Chi2Bound(SquareMatrix2::Identity(), -2);
1117 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
1118 parseMatrix(reference)));
1119 }
1120 }
1121
1122 BOOST_AUTO_TEST_CASE(Annulus) {
1123 const double minRadius = 7.2;
1124 const double maxRadius = 12.0;
1125 const double minPhi = 0.74195;
1126 const double maxPhi = 1.33970;
1127
1128 const Vector2 offset(-2., 2.);
1129
1130 auto bounds = std::make_shared<AnnulusBounds>(minRadius, maxRadius, minPhi,
1131 maxPhi, offset);
1132 auto surface =
1133 Surface::makeShared<DiscSurface>(Transform3::Identity(), bounds);
1134
1135 {
1136 std::string reference = R"X(
1137 ................................................................................
1138 ................................................................................
1139 ................................................................................
1140 ................................................................................
1141 ................................................................................
1142 ................................................................................
1143 ................................................................................
1144 ....................................X...........................................
1145 ...................................XXX..........................................
1146 ...................................XXXX.........................................
1147 ..................................XXXXXXX.......................................
1148 ..................................XXXXXXXX......................................
1149 .................................XXXXXXXXXXX....................................
1150 ................................XXXXXXXXXXXXX...................................
1151 ................................XXXXXXXXXXXXXX..................................
1152 ...............................XXXXXXXXXXXXXXXXX................................
1153 ..............................XXXXXXXXXXXXXXXXXXX...............................
1154 ..............................XXXXXXXXXXXXXXXXXXXXX.............................
1155 .............................XXXXXXXXXXXXXXXXXXXXXXX............................
1156 ............................XXXXXXXXXXXXXXXXXXXXXXXXX...........................
1157 ...........................XXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1158 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1159 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1160 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1161 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1162 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1163 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1164 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1165 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1166 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
1167 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
1168 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
1169 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
1170 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......
1171 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
1172 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
1173 .......XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
1174 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
1175 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
1176 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
1177 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
1178 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
1179 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1180 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1181 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1182 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1183 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1184 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1185 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1186 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1187 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1188 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1189 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1190 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1191 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............................
1192 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1193 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
1194 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................................
1195 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................................
1196 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................................
1197 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................................
1198 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXX......................................
1199 ...............XXXXXXXXXXXXXXXXXXXXXXXXXX.......................................
1200 ................XXXXXXXXXXXXXXXXXXXXXXX.........................................
1201 ................XXXXXXXXXXXXXXXXXXXXX...........................................
1202 ................XXXXXXXXXXXXXXXXXXX.............................................
1203 ................XXXXXXXXXXXXXXXXX...............................................
1204 .................XXXXXXXXXXXXXX.................................................
1205 .................XXXXXXXXXXXX...................................................
1206 .................XXXXXXXXXX.....................................................
1207 ..................XXXXXXX.......................................................
1208 ..................XXXX..........................................................
1209 ..................XX............................................................
1210 ................................................................................
1211 ................................................................................
1212 ................................................................................
1213 ................................................................................
1214 ................................................................................
1215 ................................................................................
1216 ................................................................................
1217 )X";
1218
1219 BoundaryTolerance tolerance = BoundaryTolerance::None();
1220 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
1221 parseMatrix(reference)));
1222 }
1223
1224 {
1225 std::string reference = R"X(
1226 ................................................................................
1227 ................................................................................
1228 ................................................................................
1229 ................................................................................
1230 ................................................................................
1231 ................................................................................
1232 ................................................................................
1233 ................................................................................
1234 ................................................................................
1235 ...................................XXXX.........................................
1236 .................................XXXXXXXX.......................................
1237 ...............................XXXXXXXXXXX......................................
1238 ..............................XXXXXXXXXXXXX.....................................
1239 ..............................XXXXXXXXXXXXXXX...................................
1240 .............................XXXXXXXXXXXXXXXXXX.................................
1241 .............................XXXXXXXXXXXXXXXXXXX................................
1242 ............................XXXXXXXXXXXXXXXXXXXXXX..............................
1243 ............................XXXXXXXXXXXXXXXXXXXXXXX.............................
1244 ...........................XXXXXXXXXXXXXXXXXXXXXXXXX............................
1245 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1246 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1247 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1248 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1249 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1250 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1251 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1252 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1253 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1254 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1255 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
1256 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
1257 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
1258 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
1259 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
1260 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
1261 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
1262 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........
1263 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
1264 ........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........
1265 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........
1266 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
1267 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
1268 .........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
1269 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
1270 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1271 ..........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1272 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1273 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1274 ...........XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1275 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1276 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1277 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1278 ............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1279 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1280 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1281 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1282 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
1283 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1284 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
1285 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................................
1286 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................................
1287 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................................
1288 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................................
1289 ................XXXXXXXXXXXXXXXXXXXXXXXXX.......................................
1290 ................XXXXXXXXXXXXXXXXXXXXXXXX........................................
1291 ................XXXXXXXXXXXXXXXXXXXXXX..........................................
1292 .................XXXXXXXXXXXXXXXXXX.............................................
1293 .................XXXXXXXXXXXXXXXX...............................................
1294 ..................XXXXXXXXXXXXX.................................................
1295 ....................XXXXXXXX....................................................
1296 ................................................................................
1297 ................................................................................
1298 ................................................................................
1299 ................................................................................
1300 ................................................................................
1301 ................................................................................
1302 ................................................................................
1303 ................................................................................
1304 ................................................................................
1305 ................................................................................
1306 )X";
1307
1308 BoundaryTolerance tolerance = BoundaryTolerance::AbsoluteEuclidean(1);
1309 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance, 0.3),
1310 parseMatrix(reference)));
1311 }
1312
1313 {
1314 std::string reference = R"X(
1315 ................................................................................
1316 ................................................................................
1317 ................................................................................
1318 ................................................................................
1319 ................................................................................
1320 ................................................................................
1321 ................................................................................
1322 ................................................................................
1323 ................................................................................
1324 ................................................................................
1325 ................................................................................
1326 ................................................................................
1327 ................................................................................
1328 ................................................................................
1329 ................................................................................
1330 ................................................................................
1331 ................................................................................
1332 ................................................................................
1333 ................................................................................
1334 ................................................................................
1335 .......................................X........................................
1336 ......................................XXX.......................................
1337 .....................................XXXXXX.....................................
1338 ....................................XXXXXXXX....................................
1339 ....................................XXXXXXXXXX..................................
1340 ...................................XXXXXXXXXXXX.................................
1341 ..................................XXXXXXXXXXXXXX................................
1342 .................................XXXXXXXXXXXXXXXXX..............................
1343 ................................XXXXXXXXXXXXXXXXXXX.............................
1344 ...............................XXXXXXXXXXXXXXXXXXXXXX...........................
1345 .............................XXXXXXXXXXXXXXXXXXXXXXXXX..........................
1346 ............................XXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1347 ...........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1348 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1349 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1350 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1351 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1352 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1353 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1354 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1355 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1356 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1357 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
1358 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............................
1359 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1360 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
1361 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXX...............................
1362 .....................XXXXXXXXXXXXXXXXXXXXXXXXXX.................................
1363 .....................XXXXXXXXXXXXXXXXXXXXXXXXX..................................
1364 ......................XXXXXXXXXXXXXXXXXXXXXXX...................................
1365 ......................XXXXXXXXXXXXXXXXXXXXX.....................................
1366 ......................XXXXXXXXXXXXXXXXXXXX......................................
1367 ......................XXXXXXXXXXXXXXXXXXX.......................................
1368 .......................XXXXXXXXXXXXXXXX.........................................
1369 .......................XXXXXXXXXXXXXXX..........................................
1370 .......................XXXXXXXXXXXXX............................................
1371 ........................XXXXXXXXXX..............................................
1372 ........................XXXXXXXXX...............................................
1373 ........................XXXXXXX.................................................
1374 .........................XXXX...................................................
1375 .........................XX.....................................................
1376 ................................................................................
1377 ................................................................................
1378 ................................................................................
1379 ................................................................................
1380 ................................................................................
1381 ................................................................................
1382 ................................................................................
1383 ................................................................................
1384 ................................................................................
1385 ................................................................................
1386 ................................................................................
1387 ................................................................................
1388 ................................................................................
1389 ................................................................................
1390 ................................................................................
1391 ................................................................................
1392 ................................................................................
1393 ................................................................................
1394 ................................................................................
1395 )X";
1396
1397 BoundaryTolerance tolerance = BoundaryTolerance::AbsoluteEuclidean(-1);
1398 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
1399 parseMatrix(reference)));
1400 }
1401
1402 {
1403 std::string reference = R"X(
1404 ................................................................................
1405 ................................................................................
1406 ................................................................................
1407 ................................................................................
1408 ................................................................................
1409 ................................................................................
1410 ................................................................................
1411 ................................................................................
1412 ................................................................................
1413 ................................................................................
1414 ................................................................................
1415 ................................................................................
1416 ................................................................................
1417 ................................................................................
1418 ................................................................................
1419 ................................XXXXX...........................................
1420 ...............................XXXXXXXXX........................................
1421 ...............................XXXXXXXXXX.......................................
1422 ...............................XXXXXXXXXX.......................................
1423 ...............................XXXXXXXXX........................................
1424 ...............................XXXXXXXXXXXXXX...................................
1425 .................................XXXXXXXXXXXXX..................................
1426 ..................................XXXXXXXXXXXXXX................................
1427 ..................................XXXXXXXXXXXXXXX...............................
1428 ..................................XXXXXXXXXXXXXXXXX.............................
1429 .................................XXXXXXXXXXXXXXXXXXX............................
1430 ................................XXXXXXXXXXXXXXXXXXXXXX..........................
1431 ...............................XXXXXXXXXXXXXXXXXXXXXXXX.........................
1432 ..............................XXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1433 .............................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1434 ............................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1435 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1436 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....X............
1437 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXX............
1438 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............
1439 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............
1440 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........
1441 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1442 .............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1443 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1444 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1445 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1446 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1447 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1448 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1449 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1450 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1451 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1452 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1453 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
1454 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1455 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
1456 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................................
1457 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................................
1458 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................................
1459 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................................
1460 ................XXXXXXXXXXXXXXXXXXXXXXXXX.......................................
1461 ................XXXXXXXXXXXXXXXXXXXXX...........................................
1462 ................XXXXXXXXXXXXXXXXXXXXX...........................................
1463 ................XXXXXXXXXXXXXXXXXXXXXX..........................................
1464 ................XXXXXXXXXXXXXXXXXXXXXX..........................................
1465 ................XXXXXXXXXXXXXXXXXXXXX...........................................
1466 ................XXXXXXXXXXXXXXXXXXXXX...........................................
1467 .................XXXXXXXXXXXXXXXXXX.............................................
1468 ..................XXXXXXXXXXXXXXXX..............................................
1469 ....................XXXXXXXXXXX.................................................
1470 ................................................................................
1471 ................................................................................
1472 ................................................................................
1473 ................................................................................
1474 ................................................................................
1475 ................................................................................
1476 ................................................................................
1477 ................................................................................
1478 ................................................................................
1479 ................................................................................
1480 ................................................................................
1481 ................................................................................
1482 ................................................................................
1483 ................................................................................
1484 )X";
1485
1486 BoundaryTolerance tolerance =
1487 BoundaryTolerance::Chi2Bound(Vector2(1, 100).asDiagonal(), 2);
1488 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance, 0.5),
1489 parseMatrix(reference)));
1490 }
1491
1492 {
1493 std::string reference = R"X(
1494 ................................................................................
1495 ................................................................................
1496 ................................................................................
1497 ................................................................................
1498 ................................................................................
1499 ................................................................................
1500 ................................................................................
1501 ................................................................................
1502 ................................................................................
1503 ................................................................................
1504 ................................................................................
1505 ................................................................................
1506 ................................................................................
1507 ................................................................................
1508 ................................................................................
1509 ................................................................................
1510 ..................................XX............................................
1511 .................................XXXX...........................................
1512 ................................XXXXXX..........................................
1513 ...............................XXXXXXXXX........................................
1514 ..............................XXXXXXXXXXX.......................................
1515 ..............................XXXXXXXXXXXX......................................
1516 .............................XXXXXXXXXXXXXX.....................................
1517 ...........................XXXXXXXXXXXXXXXXXX...................................
1518 ..........................XXXXXXXXXXXXXXXXXXXX..................................
1519 .........................XXXXXXXXXXXXXXXXXXXXXX.................................
1520 ........................XXXXXXXXXXXXXXXXXXXXXXXX................................
1521 .......................XXXXXXXXXXXXXXXXXXXXXXXXXX...............................
1522 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1523 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............................
1524 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
1525 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1526 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1527 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1528 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1529 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1530 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1531 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1532 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1533 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1534 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1535 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1536 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1537 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1538 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1539 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1540 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1541 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
1542 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXX............................
1543 .........................XXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1544 ..........................XXXXXXXXXXXXXXXXXXXXXXXX..............................
1545 ..........................XXXXXXXXXXXXXXXXXXXXXX................................
1546 ...........................XXXXXXXXXXXXXXXXXXXX.................................
1547 ...........................XXXXXXXXXXXXXXXXXXX..................................
1548 ............................XXXXXXXXXXXXXXXXX...................................
1549 ............................XXXXXXXXXXXXXXXX....................................
1550 .............................XXXXXXXXXXXXX......................................
1551 .............................XXXXXXXXXXXX.......................................
1552 ..............................XXXXXXXXXX........................................
1553 ..............................XXXXXXXX..........................................
1554 ...............................XXXXXX...........................................
1555 ...............................XXXX.............................................
1556 ...............................XXX..............................................
1557 ................................X...............................................
1558 ................................................................................
1559 ................................................................................
1560 ................................................................................
1561 ................................................................................
1562 ................................................................................
1563 ................................................................................
1564 ................................................................................
1565 ................................................................................
1566 ................................................................................
1567 ................................................................................
1568 ................................................................................
1569 ................................................................................
1570 ................................................................................
1571 ................................................................................
1572 ................................................................................
1573 ................................................................................
1574 )X";
1575
1576 BoundaryTolerance tolerance =
1577 BoundaryTolerance::Chi2Bound(Vector2(1, 100).asDiagonal(), -2);
1578 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
1579 parseMatrix(reference)));
1580 }
1581
1582 {
1583 std::string reference = R"X(
1584 ................................................................................
1585 ................................................................................
1586 ................................................................................
1587 ................................................................................
1588 ................................................................................
1589 ................................................................................
1590 ................................................................................
1591 ................................................................................
1592 ................................................................................
1593 ................................................................................
1594 ................................................................................
1595 ................................................................................
1596 ................................................................................
1597 ................................................................................
1598 ................................................................................
1599 .....................................X..........................................
1600 ..................................XXXXXXX.......................................
1601 .................................XXXXXXXXX......................................
1602 ................................XXXXXXXXXXXX....................................
1603 ................................XXXXXXXXXXXXX...................................
1604 ...............................XXXXXXXXXXXXXXXX.................................
1605 ..............................XXXXXXXXXXXXXXXXXX................................
1606 ..............................XXXXXXXXXXXXXXXXXXXX..............................
1607 .............................XXXXXXXXXXXXXXXXXXXXXX.............................
1608 ............................XXXXXXXXXXXXXXXXXXXXXXXX............................
1609 ...........................XXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1610 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1611 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1612 ........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1613 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1614 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1615 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1616 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1617 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1618 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1619 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1620 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............
1621 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1622 ..............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............
1623 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX................
1624 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1625 ...............XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.................
1626 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..................
1627 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
1628 ................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1629 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1630 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1631 .................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1632 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1633 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1634 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1635 ..................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............................
1636 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1637 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
1638 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX................................
1639 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXX.................................
1640 ....................XXXXXXXXXXXXXXXXXXXXXXXXX...................................
1641 ....................XXXXXXXXXXXXXXXXXXXXXXX.....................................
1642 .....................XXXXXXXXXXXXXXXXXXXXX......................................
1643 .....................XXXXXXXXXXXXXXXXXXX........................................
1644 .....................XXXXXXXXXXXXXXXXX..........................................
1645 ......................XXXXXXXXXXXXXX............................................
1646 ......................XXXXXXXXXXX...............................................
1647 ........................XXXXXXX.................................................
1648 ................................................................................
1649 ................................................................................
1650 ................................................................................
1651 ................................................................................
1652 ................................................................................
1653 ................................................................................
1654 ................................................................................
1655 ................................................................................
1656 ................................................................................
1657 ................................................................................
1658 ................................................................................
1659 ................................................................................
1660 ................................................................................
1661 ................................................................................
1662 ................................................................................
1663 ................................................................................
1664 )X";
1665
1666 BoundaryTolerance tolerance =
1667 BoundaryTolerance::Chi2Cartesian(Vector2(1, 1).asDiagonal(), 1);
1668 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance, 0.5),
1669 parseMatrix(reference)));
1670 }
1671
1672 {
1673 std::string reference = R"X(
1674 ................................................................................
1675 ................................................................................
1676 ................................................................................
1677 ................................................................................
1678 ................................................................................
1679 ................................................................................
1680 ................................................................................
1681 ................................................................................
1682 ................................................................................
1683 ................................................................................
1684 ................................................................................
1685 ................................................................................
1686 ................................................................................
1687 ................................................................................
1688 ................................................................................
1689 ................................................................................
1690 ................................................................................
1691 ................................................................................
1692 ................................................................................
1693 ................................................................................
1694 .......................................X........................................
1695 ......................................XXX.......................................
1696 .....................................XXXXXX.....................................
1697 ....................................XXXXXXXX....................................
1698 ....................................XXXXXXXXXX..................................
1699 ...................................XXXXXXXXXXXX.................................
1700 ..................................XXXXXXXXXXXXXX................................
1701 .................................XXXXXXXXXXXXXXXXX..............................
1702 ................................XXXXXXXXXXXXXXXXXXX.............................
1703 ...............................XXXXXXXXXXXXXXXXXXXXXX...........................
1704 .............................XXXXXXXXXXXXXXXXXXXXXXXXX..........................
1705 ............................XXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1706 ...........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1707 ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1708 .........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1709 .......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
1710 ......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
1711 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................
1712 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................
1713 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX........................
1714 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.........................
1715 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..........................
1716 ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........................
1717 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX............................
1718 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.............................
1719 ....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............................
1720 .....................XXXXXXXXXXXXXXXXXXXXXXXXXXXX...............................
1721 .....................XXXXXXXXXXXXXXXXXXXXXXXXXX.................................
1722 .....................XXXXXXXXXXXXXXXXXXXXXXXXX..................................
1723 ......................XXXXXXXXXXXXXXXXXXXXXXX...................................
1724 ......................XXXXXXXXXXXXXXXXXXXXX.....................................
1725 ......................XXXXXXXXXXXXXXXXXXXX......................................
1726 ......................XXXXXXXXXXXXXXXXXXX.......................................
1727 .......................XXXXXXXXXXXXXXXX.........................................
1728 .......................XXXXXXXXXXXXXXX..........................................
1729 .......................XXXXXXXXXXXXX............................................
1730 ........................XXXXXXXXXX..............................................
1731 ........................XXXXXXXXX...............................................
1732 ........................XXXXXXX.................................................
1733 .........................XXXX...................................................
1734 .........................XX.....................................................
1735 ................................................................................
1736 ................................................................................
1737 ................................................................................
1738 ................................................................................
1739 ................................................................................
1740 ................................................................................
1741 ................................................................................
1742 ................................................................................
1743 ................................................................................
1744 ................................................................................
1745 ................................................................................
1746 ................................................................................
1747 ................................................................................
1748 ................................................................................
1749 ................................................................................
1750 ................................................................................
1751 ................................................................................
1752 ................................................................................
1753 ................................................................................
1754 )X";
1755
1756 BoundaryTolerance tolerance =
1757 BoundaryTolerance::Chi2Cartesian(Vector2(1, 1).asDiagonal(), -1);
1758 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
1759 parseMatrix(reference)));
1760 }
1761
1762 {
1763 std::string reference = R"X(
1764 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1765 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1766 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1767 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1768 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1769 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1770 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1771 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1772 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1773 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1774 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1775 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1776 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1777 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1778 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1779 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1780 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1781 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1782 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1783 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1784 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1785 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1786 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1787 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1788 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1789 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1790 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1791 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1792 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1793 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1794 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1795 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1796 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1797 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1798 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1799 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1800 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1801 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1802 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1803 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1804 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1805 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1806 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1807 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1808 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1809 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1810 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1811 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1812 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1813 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1814 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1815 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1816 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1817 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1818 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1819 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1820 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1821 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1822 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1823 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1824 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1825 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1826 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1827 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1828 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1829 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1830 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1831 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1832 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1833 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1834 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1835 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1836 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1837 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1838 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1839 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1840 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1841 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1842 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1843 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1844 )X";
1845
1846 BoundaryTolerance tolerance = BoundaryTolerance::Infinite();
1847 BOOST_CHECK(checkMatrices(makeTestMatrix(*surface, tolerance),
1848 parseMatrix(reference)));
1849 }
1850 }
1851
1852 BOOST_AUTO_TEST_SUITE_END()
1853
1854 }