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