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