From 5a1e6d8e92f1677a30ea9f05c6eda31f00bd0f91 Mon Sep 17 00:00:00 2001 From: gjj Date: Sun, 13 Oct 2024 16:14:41 +0800 Subject: [PATCH] poly tests --- examples/example_loader2.cpp | 475 +++++++++++++++++++++++++++++++++++ gjj/PMTest.hpp | 375 +++++++++++++++++++++++---- gjj/output.cpp | 24 +- gjj/polyhedronReader.py | 4 +- 4 files changed, 813 insertions(+), 65 deletions(-) create mode 100644 examples/example_loader2.cpp diff --git a/examples/example_loader2.cpp b/examples/example_loader2.cpp new file mode 100644 index 0000000..0087ef1 --- /dev/null +++ b/examples/example_loader2.cpp @@ -0,0 +1,475 @@ +#include "organizer/loader.hpp" + +void loaderPolyTilted() +{ + Loader loader; + + // auto tag1 = loader.add + + + std::vector points; + std::vector bulges; + Vector3D extusion; + Point3D topPoint, bottomPoint, basePoint, leftBottomPoint; + Direction3D direction; + + double offset, radius1, radius2, length, width, height, areaDifference, volumeDifference; + + std::pair before, after; + + /* 体1 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.99999999999999989); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag1 = loader.addExtrude(points, bulges, extusion); + + loader.getAreaAndVolume(tag1); + + /* 体2 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag2 = loader.addExtrude(points, bulges, extusion); + + loader.getAreaAndVolume(tag2); + + /* 体3 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag3 = loader.addExtrude(points, bulges, extusion); + + loader.getAreaAndVolume(tag3); + + /* 体4 */ + topPoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 0.0000000000000000}; + bottomPoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 3300.0000000000000000}; + radius1 = 32450.000000000000; + radius2 = 33539.000000000000; + auto tag4 = loader.addCone(topPoint, bottomPoint, radius1, radius2); + + loader.getAreaAndVolume(tag4); + + /* 体3被切割 */ + basePoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 0.0000000000000000}; + direction = Direction3D{0, 0, 1}; + loader.split(tag3, basePoint, direction); + + loader.getAreaAndVolume(tag3); + + /* 体3和体4布尔差 */ + loader.differentNode(tag3, tag4); + + loader.getAreaAndVolume(tag3); + + /* 体5 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag5 = loader.addExtrude(points, bulges, extusion); + + /* 体5被切割 */ + basePoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 3300.0000000000000000}; + direction = Direction3D{0, 0, 1}; + loader.split(tag5, basePoint, direction); + + /* 体3和体5布尔并 */ + loader.unionNode(tag3, tag5); + + /* 体6 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag6 = loader.addExtrude(points, bulges, extusion); + + /* 体6被切割 */ + basePoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 3300.0000000000000000}; + direction = Direction3D{0, 0, 1}; + loader.split(tag6, basePoint, direction); + + /* 体3和体6布尔并 */ + loader.unionNode(tag3, tag6); + + /* 体2和体3布尔差 */ + loader.differentNode(tag2, tag3); + + /* 体7 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag7 = loader.addExtrude(points, bulges, extusion); + + /* 体8 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag8 = loader.addExtrude(points, bulges, extusion); + + /* 体9 */ + topPoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 0.0000000000000000}; + bottomPoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; + radius1 = 32450.000000000000; + radius2 = 33539.000000000000; + auto tag9 = loader.addCone(topPoint, bottomPoint, radius1, radius2); + + /* 体8被切割 */ + basePoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; + direction = Direction3D{0, 0, 1}; + loader.split(tag8, basePoint, direction); + + /* 体8和体9布尔差 */ + loader.differentNode(tag8, tag9); + + /* 体10 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag10 = loader.addExtrude(points, bulges, extusion); + + /* 体10被切割 */ + basePoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; + direction = Direction3D{0, 0, 1}; + loader.split(tag10, basePoint, direction); + + /* 体8和体10布尔并 */ + loader.unionNode(tag8, tag10); + + /* 体11 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); + points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); + points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); + points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.0000000000000000); + bulges.push_back(-0.99999999999999989); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; + auto tag11 = loader.addExtrude(points, bulges, extusion); + + /* 体11被切割 */ + basePoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; + direction = Direction3D{0, 0, 1}; + loader.split(tag11, basePoint, direction); + + /* 体8和体11布尔并 */ + loader.unionNode(tag8, tag11); + + /* 体7和体8布尔差 */ + loader.differentNode(tag7, tag8); + + /* 体2和体7布尔并 */ + loader.unionNode(tag2, tag7); + + /* 体1和体2布尔并 */ + loader.unionNode(tag1, tag2); + + /* 体1 Z轴偏移 -3600 */ + direction = Direction3D{0, 0, 1}; + offset = -3600; + loader.offset(tag1, direction, offset); + + /* 新的体11 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-32050.000001122418, -3.8396319723688066e-07, 0.0000000000000000}); + points.push_back(Point3D{32049.999998877582, -3.8387224776670337e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.99999999999999989); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 600.0000000000000}; + auto newTag11 = loader.addExtrude(points, bulges, extusion); + + /* 体0 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-11798.670446418590, 5999.2409883221799, 0.0000000000000000}); + points.push_back(Point3D{11801.337366082498, 5999.2409883221590, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.99999999999999989); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 600.0000000000000}; + auto tag0 = loader.addExtrude(points, bulges, extusion); + + /* 新的体11和体0布尔差 */ + loader.differentNode(newTag11, tag0); + + /* 新的体11 Z轴偏移 -3500 */ + direction = Direction3D{0, 0, 1}; + offset = -3500; + loader.offset(newTag11, direction, offset); + + /* 体1和新的体11判交 */ + /* TODO */ + + /* 体12 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{676.33403607269543, 5999.2409883221790, 0.0000000000000000}); + points.push_back(Point3D{-673.66711640879771, 5999.2409883221790, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.99999999999999989); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 600.0000000000000}; + auto tag12 = loader.addExtrude(points, bulges, extusion); + + /* 体12 Z轴偏移 -3500 */ + direction = Direction3D{0, 0, 1}; + offset = -3500; + loader.offset(tag12, direction, offset); + + /* 体1和体12判交 */ + /* TODO */ + + /* 新的体11和体12布尔并 保留体12 */ + loader.unionNode(newTag11, tag12); + + /* 体13 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-2398.6665401680511, 5999.2409883221771, 0.0000000000000000}); + points.push_back(Point3D{2401.3334598319489, 5999.2409883221790, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.99999999999999989); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 600.0000000000000}; + auto tag13 = loader.addExtrude(points, bulges, extusion); + + /* 体14 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-673.66711640879771, 5999.2409883221790, 0.0000000000000000}); + points.push_back(Point3D{676.33403607269543, 5999.2409883221790, 0.0000000000000000}); + bulges.push_back(-0.99999999999999989); + bulges.push_back(-0.99999999999999989); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 600.0000000000000}; + auto tag14 = loader.addExtrude(points, bulges, extusion); + + /* 体13和体14布尔差 */ + loader.differentNode(tag13, tag14); + + /* 体13 Z轴偏移-3500 */ + direction = Direction3D{0, 0, 1}; + offset = -3500; + loader.offset(tag13, direction, offset); + + /* 体1和体13判交 */ + /* TODO */ + + /* 新的体11和体13布尔并保留体13 */ + loader.unionNode(newTag11, tag13); + + before = loader.getAreaAndVolume(tag1); + + /* 体1和新的体11布尔差 */ + loader.differentNode(tag1, newTag11); + + after = loader.getAreaAndVolume(tag1); + + /* 获取 体1 布尔前后的 体积差 和 面积差 */ + areaDifference = after.first - before.first; + volumeDifference = after.second - before.second; + + /* 定义空体 扣减体1 */ + auto subTag1 = loader.addEmpty(); + auto cycle = [&loader, subTag1](const Point3D& point) { + std::vector points; + std::vector bulges; + Vector3D extusion; + Direction3D direction; + double offset; + + /* 循环体1 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-1000.0000000000000, 1000.0000000000001, 0.0000000000000000}); + points.push_back(Point3D{-1000.0000000000000, -1000.0000000000000, 0.0000000000000000}); + points.push_back(Point3D{1000.0000000000000, -1000.0000000000000, 0.0000000000000000}); + points.push_back(Point3D{1000.0000000000000, 1000.0000000000000, 0.0000000000000000}); + bulges.push_back(0.0000000000000000); + bulges.push_back(0.0000000000000000); + bulges.push_back(0.0000000000000000); + bulges.push_back(0.0000000000000000); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 600.0000000000000}; + auto cycleTag1 = loader.addExtrude(points, bulges, extusion); + + /* 循环体1 偏移+ 传入的X,Y,Z坐标值 */ + loader.offset(cycleTag1, Direction3D{point}, point.length()); + + /* 循环体2 */ + auto leftBottomPoint = Point3D{point.m_x - 1000, point.m_y - 1000, point.m_z + 0.0000000000005}; + double length = 2000.0000000000036; + double width = 2000.0000000000036; + double height = 600; + auto cycleTag2 = loader.addBox(leftBottomPoint, length, width, height); + + /* 循环体3 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-32050.000001122418, -3.8396319723688066e-07, 0.0000000000000000}); + points.push_back(Point3D{32049.999998877582, -3.8387224776670337e-07, 0.0000000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.99999999999999989); + extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 600.0000000000000}; + auto cycleTag3 = loader.addExtrude(points, bulges, extusion); + + /* 循环体3 Z轴偏移 -2900 */ + direction = Direction3D{0, 0, 1}; + offset = -2900; + loader.offset(cycleTag3, direction, offset); + + /* 循环体3和体2布尔交 */ + loader.intersectNode(cycleTag3, cycleTag2); + + /* 循环体1和体3布尔交 */ + loader.intersectNode(cycleTag1, cycleTag3); + + /* 循环体1和体1判交 */ + /* TODO */ + + /* 扣减体1和循环体1布尔并 */ + loader.unionNode(subTag1, cycleTag1); + }; + + points.clear(); + points.push_back(Point3D{-21595.036456438422, -21609.173181957169, -2900.0000000000000}); + points.push_back(Point3D{-13505.711180076411, -13505.717935507526, -2900.0000000000000}); + points.push_back(Point3D{-2987.8729842756293, -18864.829751913778, -2900.0000000000000}); + points.push_back(Point3D{2987.9196792985895, -18864.830728476278, -2900.0000000000000}); + points.push_back(Point3D{13505.770265236089, -13505.722818320026, -2900.0000000000000}); + points.push_back(Point3D{17018.254640236089, -8671.2047519137759, -2900.0000000000000}); + points.push_back(Point3D{27220.281983986089, -13869.397623007526, -2900.0000000000000}); + points.push_back(Point3D{21602.139405861089, -21602.103677695028, -2900.0000000000000}); + points.push_back(Point3D{30173.926515236089, -4778.9669589450259, -2900.0000000000000}); + points.push_back(Point3D{18864.887452736089, -2987.8275546481514, -2900.0000000000000}); + points.push_back(Point3D{-18864.815672263911, -2987.8811435153389, -2900.0000000000000}); + points.push_back(Point3D{-30173.856687888911, -4779.0570468356509, -2900.0000000000000}); + points.push_back(Point3D{-13869.422117576411, -27220.218912070028, -2900.0000000000000}); + points.push_back(Point3D{-11781.052000388911, -23121.591958945028, -2900.0000000000000}); + points.push_back(Point3D{-8671.2131332014105, -17018.193521445028, -2900.0000000000000}); + points.push_back(Point3D{-27220.229734763911, -13869.391763632526, -2900.0000000000000}); + points.push_back(Point3D{-17018.194578513911, -8671.1974276950259, -2900.0000000000000}); + points.push_back(Point3D{-30173.856687888911, 4779.0965176174741, -2900.0000000000000}); + points.push_back(Point3D{-25630.485594138911, 4059.4959316799741, -2900.0000000000000}); + points.push_back(Point3D{-18864.815672263911, 2987.9134121487236, -2900.0000000000000}); + points.push_back(Point3D{-15863.798094138911, 8083.0535488674741, -2900.0000000000000}); + points.push_back(Point3D{-27220.216062888911, 13869.449056679974, -2900.0000000000000}); + points.push_back(Point3D{-21602.091062888911, 21602.130697304972, -2900.0000000000000}); + points.push_back(Point3D{-18349.393797263911, 18349.437337929972, -2900.0000000000000}); + points.push_back(Point3D{-13908.684812888911, 13908.728353554974, -2900.0000000000000}); + points.push_back(Point3D{-9584.8552230451605, 18811.339681679972, -2900.0000000000000}); + points.push_back(Point3D{-13869.425047263911, 27220.249837929972, -2900.0000000000000}); + points.push_back(Point3D{-4779.0493148420355, 30173.900228554972, -2900.0000000000000}); + points.push_back(Point3D{4779.0900894548395, 30173.904134804972, -2900.0000000000000}); + points.push_back(Point3D{13869.430421486089, 27220.275228554972, -2900.0000000000000}); + points.push_back(Point3D{9584.8806167985895, 18811.363119179972, -2900.0000000000000}); + points.push_back(Point3D{13908.739015236089, 13908.728353554974, -2900.0000000000000}); + points.push_back(Point3D{18349.453858986089, 18349.433431679972, -2900.0000000000000}); + points.push_back(Point3D{21602.147218361089, 21602.130697304972, -2900.0000000000000}); + points.push_back(Point3D{27220.268312111089, 13869.454916054974, -2900.0000000000000}); + points.push_back(Point3D{15863.852296486089, 8083.0574551174741, -2900.0000000000000}); + points.push_back(Point3D{18864.879640236089, 2987.9153652737236, -2900.0000000000000}); + points.push_back(Point3D{25630.543702736089, 4059.4900723049741, -2900.0000000000000}); + points.push_back(Point3D{30173.912843361089, 4779.0896816799741, -2900.0000000000000}); + points.push_back(Point3D{13869.432374611089, -27220.242349570028, -2900.0000000000000}); + points.push_back(Point3D{-4776.1108367703273, -30098.869302695028, -2900.0000000000000}); + points.push_back(Point3D{4779.0915542985895, -30098.869302695028, -2900.0000000000000}); + points.push_back(Point3D{-23121.594969138911, -11781.033365195026, -2900.0000000000000}); + points.push_back(Point3D{23121.637452736089, 11781.092611367474, -2900.0000000000000}); + points.push_back(Point3D{11781.053468361089, -23121.619302695028, -2900.0000000000000}); + points.push_back(Point3D{-23121.583250388911, 11781.089681679974, -2900.0000000000000}); + for (auto& point : points) { cycle(point); } + + before = loader.getAreaAndVolume(tag1); + + /* 体1和扣减体1布尔差 */ + loader.differentNode(tag1, subTag1); + + after = loader.getAreaAndVolume(tag1); + + /* 获取 体1 布尔前后的 体积差 和 面积差 */ + areaDifference = after.first - before.first; + volumeDifference = after.second - before.second; + + /* 体15:Ent1.bool */ + + /* 体1和体15布尔差 */ + + /* 体16 */ + points.clear(); + bulges.clear(); + points.push_back(Point3D{-2503.6291053659488, 5999.2409883221790, -3500.0000000000000}); + points.push_back(Point3D{2501.2960250298465, 5999.2409883221790, -3500.0000000000000}); + bulges.push_back(0.99999999999999989); + bulges.push_back(0.99999999999999989); + extusion = Vector3D{-0.0000000000000000, -0.0000000000000000, -100.00000000000000}; + auto tag16 = loader.addExtrude(points, bulges, extusion); + + before = loader.getAreaAndVolume(tag1); + + /* 体1和体16布尔差 */ + loader.differentNode(tag1, tag16); + + after = loader.getAreaAndVolume(tag1); + + /* 获取 体1 布尔前后的 体积差 和 面积差 */ + areaDifference = after.first - before.first; + volumeDifference = after.second - before.second; +} diff --git a/gjj/PMTest.hpp b/gjj/PMTest.hpp index 15320ad..0913d15 100644 --- a/gjj/PMTest.hpp +++ b/gjj/PMTest.hpp @@ -13,61 +13,336 @@ void casePolyhedronTilted() { const int PRIMITIVE_CNT = 2; std::vector> primitiveDescriptions(PRIMITIVE_CNT); - primitiveDescriptions[0] = std::make_shared(MeshDesc( + primitiveDescriptions[0] = std::make_shared(MeshDesc( { - uvector3{2629.82969004962, 6801.21455575771, 49030.00000000000}, - uvector3{2869.82968877607, 6801.18983125328, 49030.00000000000}, - uvector3{2869.82968877607, 6801.18983125328, 52180.00000000000}, - uvector3{2629.82969004962, 6801.21455575771, 52180.00000000000}, - uvector3{2870.01294237553, 8580.02684557581, 49030.00000000000}, - uvector3{2629.98821659743, 8340.02684557581, 49030.00000000000}, - uvector3{1939.99863941572, 8340.02684557581, 49030.00000000000}, - uvector3{1939.99863941572, 8580.02684557581, 49030.00000000000}, - uvector3{2629.98821659743, 8340.02684557581, 52180.00000000000}, - uvector3{1939.99863941572, 8340.02684557581, 52180.00000000000}, - uvector3{2870.01294237553, 8580.02684557581, 52180.00000000000}, - uvector3{1939.99863941572, 8580.02684557581, 52180.00000000000}, + uvector3{11748.40944836227, -4325.95442631630, 21549.59021205360}, + uvector3{11748.40944836227, -4325.95442631630, 21688.15427665911}, + uvector3{12484.47483358811, -3577.50000026381, 21256.03391230463}, + uvector3{12484.47483358811, -3577.50000026381, 21117.46984769912}, + uvector3{13547.89202684581, -6100.00000002560, 20666.46170041069}, + uvector3{13395.74126433313, -5950.00000002583, 20614.28430405553}, + uvector3{13395.74126433326, -5950.00000002584, 20663.98975519961}, + uvector3{13547.89202684630, -6100.00000002596, 20663.99725169609}, + uvector3{14896.90742621000, -5950.00000002583, 19886.27039878878}, + uvector3{13547.89202684630, -5950.00000002583, 20665.01632032316}, + uvector3{14896.90742621000, -5950.00000002583, 19747.70633418327}, + uvector3{13547.89202684630, -5950.00000002583, 20526.45225571764}, + uvector3{13547.89202684630, -5950.00000002583, 20663.99725169609}, + uvector3{19320.12419289630, -10425.00000002583, 17237.43714661155}, + uvector3{17934.90567930174, -10425.00000002583, 18037.08203458280}, + uvector3{17934.90567930176, -10425.00000002583, 18174.44161578225}, + uvector3{19320.12419289630, -10425.00000002583, 17374.79672781102}, + uvector3{19322.21070997919, -10425.00000002583, 17374.79672780697}, + uvector3{19447.22812297115, -10425.00000002583, 17302.62794416358}, + uvector3{19447.22812297115, -10425.00000002583, 17164.06387955807}, + uvector3{20849.99999998906, -13298.88732652532, 16381.97836082562}, + uvector3{20849.99999998906, -11804.55202899014, 16367.57914427394}, + uvector3{20849.99999998906, -11952.06910409846, 16369.00059922656}, + uvector3{21124.99999998917, -13570.00000002583, 16225.84155693102}, + uvector3{21124.99999998917, -13570.00000002583, 16364.40562153653}, + uvector3{17808.11337720760, -10300.00000002579, 18247.63498939708}, + uvector3{20849.99999998906, -13298.88732652532, 16433.95194745345}, + uvector3{20998.20769789509, -13445.00000002584, 16435.35986977861}, + uvector3{20998.20769789509, -13445.00000002584, 16423.72661838442}, + uvector3{20999.99999998906, -13446.76696661644, 16423.72670669148}, + uvector3{20999.99999998906, -13446.76696661645, 16296.81283142860}, + uvector3{21124.99999998918, -13445.00000002584, 16363.20113813048}, + uvector3{21124.99999998918, -13445.00000002584, 16224.63707352497}, + uvector3{20999.99999998706, -11952.06910409846, 16420.97418585554}, + uvector3{20849.99999998906, -11804.55202899014, 16506.14320887944}, + uvector3{19320.12419289630, -10300.00000002807, 17374.79672781104}, + uvector3{20999.99999998906, -13445.00000002584, 16435.35986977861}, + uvector3{20849.99999998906, -11952.06910409846, 16420.97418585438}, + uvector3{20999.99999998906, -13445.00000002584, 16296.79580517310}, + uvector3{20999.99999998906, -13445.00000002584, 16423.72670669148}, + uvector3{15049.43214230555, -6250.00000002583, 19662.54917389031}, + uvector3{13700.04278935896, -6250.00000002583, 20441.51096755456}, + uvector3{13700.04278935883, -6250.00000002583, 20578.62965207288}, + uvector3{15049.43214230555, -6250.00000002583, 19799.66785840855}, + uvector3{15051.93596280547, -6250.00000002583, 19799.66785840341}, + uvector3{15201.95685839510, -6250.00000002583, 19713.06531803178}, + uvector3{15201.95685839510, -6250.00000002583, 19574.50125342627}, + uvector3{17374.99999998906, -9873.00899774759, 18354.97979185655}, + uvector3{17499.99999998647, -8510.00401819123, 18269.68732516803}, + uvector3{17374.99999998905, -8510.00401819123, 18341.84605681460}, + uvector3{17499.99999998906, -9996.24203115686, 18422.57258196454}, + uvector3{17374.99999998906, -9873.00899774759, 18421.38512481399}, + uvector3{17499.99999998647, -8510.00401819123, 18408.25138977354}, + uvector3{15049.43214230555, -6100.00000002878, 19799.66785840858}, + uvector3{17374.99999998905, -8510.00401819123, 18408.25138977205}, + uvector3{17681.32107511346, -10175.00000002584, 18239.32978475061}, + uvector3{17681.32107511355, -10175.00000002583, 18181.05981500027}, + uvector3{17808.11337720775, -10175.00000002583, 18107.86644138542}, + uvector3{17808.11337720775, -10175.00000002583, 18239.33603183102}, + uvector3{17499.99999998894, -9996.24203115674, 18414.69559548384}, + uvector3{17624.99999998906, -10119.47506456613, 18343.54697073095}, + uvector3{17624.99999998905, -10119.47506456613, 18213.03724286152}, + uvector3{17808.11337720775, -10300.00000002602, 18239.33603183102}, + uvector3{19193.02026281690, -10175.00000002583, 17446.96551146108}, + uvector3{17624.99999998905, -8632.93491411901, 18337.27720391787}, + uvector3{17624.99999998906, -9996.24203115674, 18350.41385031648}, + uvector3{17624.99999998906, -10105.75355350319, 18351.46908880798}, + uvector3{17513.64524135624, -9996.24203115674, 18414.69559548384}, + uvector3{17808.11337720776, -10175.00000002583, 18246.43050599092}, + uvector3{19193.02026281690, -10175.00000002583, 17308.40144685557}, + uvector3{17624.99999998905, -8632.93491411901, 18198.71313931236}, + uvector3{17624.99999998906, -9996.24203115674, 18211.84978571097}, + uvector3{11748.40944836227, -4325.95442631630, 21549.59021205360}, + uvector3{11748.40944836227, -4325.95442631630, 21688.15427665911}, + uvector3{12484.47483358811, -3577.50000026381, 21256.03391230463}, + uvector3{12484.47483358811, -3577.50000026381, 21117.46984769912}, + uvector3{13547.89202684581, -6100.00000002560, 20666.46170041069}, + uvector3{13395.74126433313, -5950.00000002583, 20614.28430405553}, + uvector3{13395.74126433326, -5950.00000002584, 20663.98975519961}, + uvector3{13547.89202684630, -6100.00000002596, 20663.99725169609}, + uvector3{14896.90742621000, -5950.00000002583, 19886.27039878878}, + uvector3{13547.89202684630, -5950.00000002583, 20665.01632032316}, + uvector3{14896.90742621000, -5950.00000002583, 19747.70633418327}, + uvector3{13547.89202684630, -5950.00000002583, 20526.45225571764}, + uvector3{13547.89202684630, -5950.00000002583, 20663.99725169609}, + uvector3{19320.12419289630, -10425.00000002583, 17237.43714661155}, + uvector3{17934.90567930174, -10425.00000002583, 18037.08203458280}, + uvector3{17934.90567930176, -10425.00000002583, 18174.44161578225}, + uvector3{19320.12419289630, -10425.00000002583, 17374.79672781102}, + uvector3{19322.21070997919, -10425.00000002583, 17374.79672780697}, + uvector3{19447.22812297115, -10425.00000002583, 17302.62794416358}, + uvector3{19447.22812297115, -10425.00000002583, 17164.06387955807}, + uvector3{20849.99999998906, -13298.88732652532, 16381.97836082562}, + uvector3{20849.99999998906, -11804.55202899014, 16367.57914427394}, + uvector3{20849.99999998906, -11952.06910409846, 16369.00059922656}, + uvector3{21124.99999998917, -13570.00000002583, 16225.84155693102}, + uvector3{21124.99999998917, -13570.00000002583, 16364.40562153653}, + uvector3{17808.11337720760, -10300.00000002579, 18247.63498939708}, + uvector3{20849.99999998906, -13298.88732652532, 16433.95194745345}, + uvector3{20998.20769789509, -13445.00000002584, 16435.35986977861}, + uvector3{20998.20769789509, -13445.00000002584, 16423.72661838442}, + uvector3{20999.99999998906, -13446.76696661644, 16423.72670669148}, + uvector3{20999.99999998906, -13446.76696661645, 16296.81283142860}, + uvector3{21124.99999998918, -13445.00000002584, 16363.20113813048}, + uvector3{21124.99999998918, -13445.00000002584, 16224.63707352497}, + uvector3{20999.99999998706, -11952.06910409846, 16420.97418585554}, + uvector3{20849.99999998906, -11804.55202899014, 16506.14320887944}, + uvector3{19320.12419289630, -10300.00000002807, 17374.79672781104}, + uvector3{20999.99999998906, -13445.00000002584, 16435.35986977861}, + uvector3{20849.99999998906, -11952.06910409846, 16420.97418585438}, + uvector3{20999.99999998906, -13445.00000002584, 16296.79580517310}, + uvector3{20999.99999998906, -13445.00000002584, 16423.72670669148}, + uvector3{15049.43214230555, -6250.00000002583, 19662.54917389031}, + uvector3{13700.04278935896, -6250.00000002583, 20441.51096755456}, + uvector3{13700.04278935883, -6250.00000002583, 20578.62965207288}, + uvector3{15049.43214230555, -6250.00000002583, 19799.66785840855}, + uvector3{15051.93596280547, -6250.00000002583, 19799.66785840341}, + uvector3{15201.95685839510, -6250.00000002583, 19713.06531803178}, + uvector3{15201.95685839510, -6250.00000002583, 19574.50125342627}, + uvector3{17374.99999998906, -9873.00899774759, 18354.97979185655}, + uvector3{17499.99999998647, -8510.00401819123, 18269.68732516803}, + uvector3{17374.99999998905, -8510.00401819123, 18341.84605681460}, + uvector3{17499.99999998906, -9996.24203115686, 18422.57258196454}, + uvector3{17374.99999998906, -9873.00899774759, 18421.38512481399}, + uvector3{17499.99999998647, -8510.00401819123, 18408.25138977354}, + uvector3{15049.43214230555, -6100.00000002878, 19799.66785840858}, + uvector3{17374.99999998905, -8510.00401819123, 18408.25138977205}, + uvector3{17681.32107511346, -10175.00000002584, 18239.32978475061}, + uvector3{17681.32107511355, -10175.00000002583, 18181.05981500027}, + uvector3{17808.11337720775, -10175.00000002583, 18107.86644138542}, + uvector3{17808.11337720775, -10175.00000002583, 18239.33603183102}, + uvector3{17499.99999998894, -9996.24203115674, 18414.69559548384}, + uvector3{17624.99999998906, -10119.47506456613, 18343.54697073095}, + uvector3{17624.99999998905, -10119.47506456613, 18213.03724286152}, + uvector3{17808.11337720775, -10300.00000002602, 18239.33603183102}, + uvector3{19193.02026281690, -10175.00000002583, 17446.96551146108}, + uvector3{17624.99999998905, -8632.93491411901, 18337.27720391787}, + uvector3{17624.99999998906, -9996.24203115674, 18350.41385031648}, + uvector3{17624.99999998906, -10105.75355350319, 18351.46908880798}, + uvector3{17513.64524135624, -9996.24203115674, 18414.69559548384}, + uvector3{17808.11337720776, -10175.00000002583, 18246.43050599092}, + uvector3{19193.02026281690, -10175.00000002583, 17308.40144685557}, + uvector3{17624.99999998905, -8632.93491411901, 18198.71313931236}, + uvector3{17624.99999998906, -9996.24203115674, 18211.84978571097}, + uvector3{11748.40944836227, -4325.95442631630, 21549.59021205360}, + uvector3{11748.40944836227, -4325.95442631630, 21688.15427665911}, + uvector3{12484.47483358811, -3577.50000026381, 21256.03391230463}, + uvector3{12484.47483358811, -3577.50000026381, 21117.46984769912}, + uvector3{13547.89202684581, -6100.00000002560, 20666.46170041069}, + uvector3{13395.74126433313, -5950.00000002583, 20614.28430405553}, + uvector3{13395.74126433326, -5950.00000002584, 20663.98975519961}, + uvector3{13547.89202684630, -6100.00000002596, 20663.99725169609}, + uvector3{14896.90742621000, -5950.00000002583, 19886.27039878878}, + uvector3{13547.89202684630, -5950.00000002583, 20665.01632032316}, + uvector3{14896.90742621000, -5950.00000002583, 19747.70633418327}, + uvector3{13547.89202684630, -5950.00000002583, 20526.45225571764}, + uvector3{13547.89202684630, -5950.00000002583, 20663.99725169609}, + uvector3{19320.12419289630, -10425.00000002583, 17237.43714661155}, + uvector3{17934.90567930174, -10425.00000002583, 18037.08203458280}, + uvector3{17934.90567930176, -10425.00000002583, 18174.44161578225}, + uvector3{19320.12419289630, -10425.00000002583, 17374.79672781102}, + uvector3{19322.21070997919, -10425.00000002583, 17374.79672780697}, + uvector3{19447.22812297115, -10425.00000002583, 17302.62794416358}, + uvector3{19447.22812297115, -10425.00000002583, 17164.06387955807}, + uvector3{20849.99999998906, -13298.88732652532, 16381.97836082562}, + uvector3{20849.99999998906, -11804.55202899014, 16367.57914427394}, + uvector3{20849.99999998906, -11952.06910409846, 16369.00059922656}, + uvector3{21124.99999998917, -13570.00000002583, 16225.84155693102}, + uvector3{21124.99999998917, -13570.00000002583, 16364.40562153653}, + uvector3{17808.11337720760, -10300.00000002579, 18247.63498939708}, + uvector3{20849.99999998906, -13298.88732652532, 16433.95194745345}, + uvector3{20998.20769789509, -13445.00000002584, 16435.35986977861}, + uvector3{20998.20769789509, -13445.00000002584, 16423.72661838442}, + uvector3{20999.99999998906, -13446.76696661644, 16423.72670669148}, + uvector3{20999.99999998906, -13446.76696661645, 16296.81283142860}, + uvector3{21124.99999998918, -13445.00000002584, 16363.20113813048}, + uvector3{21124.99999998918, -13445.00000002584, 16224.63707352497}, + uvector3{20999.99999998706, -11952.06910409846, 16420.97418585554}, + uvector3{20849.99999998906, -11804.55202899014, 16506.14320887944}, + uvector3{19320.12419289630, -10300.00000002807, 17374.79672781104}, + uvector3{20999.99999998906, -13445.00000002584, 16435.35986977861}, + uvector3{20849.99999998906, -11952.06910409846, 16420.97418585438}, + uvector3{20999.99999998906, -13445.00000002584, 16296.79580517310}, + uvector3{20999.99999998906, -13445.00000002584, 16423.72670669148}, + uvector3{15049.43214230555, -6250.00000002583, 19662.54917389031}, + uvector3{13700.04278935896, -6250.00000002583, 20441.51096755456}, + uvector3{13700.04278935883, -6250.00000002583, 20578.62965207288}, + uvector3{15049.43214230555, -6250.00000002583, 19799.66785840855}, + uvector3{15051.93596280547, -6250.00000002583, 19799.66785840341}, + uvector3{15201.95685839510, -6250.00000002583, 19713.06531803178}, + uvector3{15201.95685839510, -6250.00000002583, 19574.50125342627}, + uvector3{17374.99999998906, -9873.00899774759, 18354.97979185655}, + uvector3{17499.99999998647, -8510.00401819123, 18269.68732516803}, + uvector3{17374.99999998905, -8510.00401819123, 18341.84605681460}, + uvector3{17499.99999998906, -9996.24203115686, 18422.57258196454}, + uvector3{17374.99999998906, -9873.00899774759, 18421.38512481399}, + uvector3{17499.99999998647, -8510.00401819123, 18408.25138977354}, + uvector3{15049.43214230555, -6100.00000002878, 19799.66785840858}, + uvector3{17374.99999998905, -8510.00401819123, 18408.25138977205}, + uvector3{17681.32107511346, -10175.00000002584, 18239.32978475061}, + uvector3{17681.32107511355, -10175.00000002583, 18181.05981500027}, + uvector3{17808.11337720775, -10175.00000002583, 18107.86644138542}, + uvector3{17808.11337720775, -10175.00000002583, 18239.33603183102}, + uvector3{17499.99999998894, -9996.24203115674, 18414.69559548384}, + uvector3{17624.99999998906, -10119.47506456613, 18343.54697073095}, + uvector3{17624.99999998905, -10119.47506456613, 18213.03724286152}, + uvector3{17808.11337720775, -10300.00000002602, 18239.33603183102}, + uvector3{19193.02026281690, -10175.00000002583, 17446.96551146108}, + uvector3{17624.99999998905, -8632.93491411901, 18337.27720391787}, + uvector3{17624.99999998906, -9996.24203115674, 18350.41385031648}, + uvector3{17624.99999998906, -10105.75355350319, 18351.46908880798}, + uvector3{17513.64524135624, -9996.24203115674, 18414.69559548384}, + uvector3{17808.11337720776, -10175.00000002583, 18246.43050599092}, + uvector3{19193.02026281690, -10175.00000002583, 17308.40144685557}, + uvector3{17624.99999998905, -8632.93491411901, 18198.71313931236}, + uvector3{17624.99999998906, -9996.24203115674, 18211.84978571097}, + uvector3{11748.40944836227, -4325.95442631630, 21549.59021205360}, + uvector3{11748.40944836227, -4325.95442631630, 21688.15427665911}, + uvector3{12484.47483358811, -3577.50000026381, 21256.03391230463}, + uvector3{12484.47483358811, -3577.50000026381, 21117.46984769912}, + uvector3{13547.89202684581, -6100.00000002560, 20666.46170041069}, + uvector3{13395.74126433313, -5950.00000002583, 20614.28430405553}, + uvector3{13395.74126433326, -5950.00000002584, 20663.98975519961}, + uvector3{13547.89202684630, -6100.00000002596, 20663.99725169609}, + uvector3{14896.90742621000, -5950.00000002583, 19886.27039878878}, + uvector3{13547.89202684630, -5950.00000002583, 20665.01632032316}, + uvector3{14896.90742621000, -5950.00000002583, 19747.70633418327}, + uvector3{13547.89202684630, -5950.00000002583, 20526.45225571764}, + uvector3{13547.89202684630, -5950.00000002583, 20663.99725169609}, + uvector3{19320.12419289630, -10425.00000002583, 17237.43714661155}, + uvector3{17934.90567930174, -10425.00000002583, 18037.08203458280}, + uvector3{17934.90567930176, -10425.00000002583, 18174.44161578225}, + uvector3{19320.12419289630, -10425.00000002583, 17374.79672781102}, + uvector3{19322.21070997919, -10425.00000002583, 17374.79672780697}, + uvector3{19447.22812297115, -10425.00000002583, 17302.62794416358}, + uvector3{19447.22812297115, -10425.00000002583, 17164.06387955807}, + uvector3{20849.99999998906, -13298.88732652532, 16381.97836082562}, + uvector3{20849.99999998906, -11804.55202899014, 16367.57914427394}, + uvector3{20849.99999998906, -11952.06910409846, 16369.00059922656}, + uvector3{21124.99999998917, -13570.00000002583, 16225.84155693102}, + uvector3{21124.99999998917, -13570.00000002583, 16364.40562153653}, + uvector3{17808.11337720760, -10300.00000002579, 18247.63498939708}, + uvector3{20849.99999998906, -13298.88732652532, 16433.95194745345}, + uvector3{20998.20769789509, -13445.00000002584, 16435.35986977861}, + uvector3{20998.20769789509, -13445.00000002584, 16423.72661838442}, + uvector3{20999.99999998906, -13446.76696661644, 16423.72670669148}, + uvector3{20999.99999998906, -13446.76696661645, 16296.81283142860}, + uvector3{21124.99999998918, -13445.00000002584, 16363.20113813048}, + uvector3{21124.99999998918, -13445.00000002584, 16224.63707352497}, + uvector3{20999.99999998706, -11952.06910409846, 16420.97418585554}, + uvector3{20849.99999998906, -11804.55202899014, 16506.14320887944}, + uvector3{19320.12419289630, -10300.00000002807, 17374.79672781104}, + uvector3{20999.99999998906, -13445.00000002584, 16435.35986977861}, + uvector3{20849.99999998906, -11952.06910409846, 16420.97418585438}, + uvector3{20999.99999998906, -13445.00000002584, 16296.79580517310}, + uvector3{20999.99999998906, -13445.00000002584, 16423.72670669148}, + uvector3{15049.43214230555, -6250.00000002583, 19662.54917389031}, + uvector3{13700.04278935896, -6250.00000002583, 20441.51096755456}, + uvector3{13700.04278935883, -6250.00000002583, 20578.62965207288}, + uvector3{15049.43214230555, -6250.00000002583, 19799.66785840855}, + uvector3{15051.93596280547, -6250.00000002583, 19799.66785840341}, + uvector3{15201.95685839510, -6250.00000002583, 19713.06531803178}, + uvector3{15201.95685839510, -6250.00000002583, 19574.50125342627}, + uvector3{17374.99999998906, -9873.00899774759, 18354.97979185655}, + uvector3{17499.99999998647, -8510.00401819123, 18269.68732516803}, + uvector3{17374.99999998905, -8510.00401819123, 18341.84605681460}, + uvector3{17499.99999998906, -9996.24203115686, 18422.57258196454}, + uvector3{17374.99999998906, -9873.00899774759, 18421.38512481399}, + uvector3{17499.99999998647, -8510.00401819123, 18408.25138977354}, + uvector3{15049.43214230555, -6100.00000002878, 19799.66785840858}, + uvector3{17374.99999998905, -8510.00401819123, 18408.25138977205}, + uvector3{17681.32107511346, -10175.00000002584, 18239.32978475061}, + uvector3{17681.32107511355, -10175.00000002583, 18181.05981500027}, + uvector3{17808.11337720775, -10175.00000002583, 18107.86644138542}, + uvector3{17808.11337720775, -10175.00000002583, 18239.33603183102}, + uvector3{17499.99999998894, -9996.24203115674, 18414.69559548384}, + uvector3{17624.99999998906, -10119.47506456613, 18343.54697073095}, + uvector3{17624.99999998905, -10119.47506456613, 18213.03724286152}, + uvector3{17808.11337720775, -10300.00000002602, 18239.33603183102}, + uvector3{19193.02026281690, -10175.00000002583, 17446.96551146108}, + uvector3{17624.99999998905, -8632.93491411901, 18337.27720391787}, + uvector3{17624.99999998906, -9996.24203115674, 18350.41385031648}, + uvector3{17624.99999998906, -10105.75355350319, 18351.46908880798}, + uvector3{17513.64524135624, -9996.24203115674, 18414.69559548384}, + uvector3{17808.11337720776, -10175.00000002583, 18246.43050599092}, + uvector3{19193.02026281690, -10175.00000002583, 17308.40144685557}, + uvector3{17624.99999998905, -8632.93491411901, 18198.71313931236}, + uvector3{17624.99999998906, -9996.24203115674, 18211.84978571097} }, - {0, 1, 2, 3, 4, 1, 0, 5, 6, 7, 6, 5, 8, 9, 5, 0, 3, 8, 8, 3, 2, 10, 11, 9, 1, 4, 10, 2, 4, 7, 11, 10, 7, 6, 9, 11}, - {uvector2i{0, 4}, uvector2i{4, 6}, uvector2i{10, 4}, uvector2i{14, 4}, uvector2i{18, 6}, uvector2i{24, 4}, - uvector2i{28, 4}, uvector2i{32, 4}})); - primitiveDescriptions[1] = std::make_shared(CuboidDesc(uvector3(0.6, 0.6, -0.6), 2.)); - // primitiveDescriptions[1] = std::make_shared(SphereDesc(1., uvector3(0.6, 0.6, -0.6), 1.)); - primitiveDescriptions[2] = std::make_shared(SphereDesc(0.7, uvector3(0.8, 0.8, 0.8), 1.)); - primitiveDescriptions[3] = std::make_shared(SphereDesc(0.5, uvector3(-0.3, -0.8, 0.8), 1.)); - std::vector pyramidBottomVertices = { - uvector3{-1, -1, 0}, - uvector3{1, -1, 0}, - uvector3{1, 1, 0}, - uvector3{-1, 1, 0} - }; - // primitiveDescriptions[4] = std::make_shared(pyramidBottomVertices, uvector3{0, 0, 1}); - primitiveDescriptions[4] = std::make_shared(SphereDesc(0.2, uvector3(0.2, -0.7, 0.), 1.)); - - // primitiveDescriptions[5] = std::make_shared(SphereDesc(0.2, uvector3(0., -0.5, 0.), 1)); - primitiveDescriptions[5] = std::make_shared(ConeDesc(uvector3(0., -0.2, 0.), 0.4, -0.7, 1)); - // primitiveDescriptions[6] = std::make_shared(CylinderDesc(uvector3(-0.3, 0.3, 2.3), 0.4, 3.6, 1)); + {0, 1, 2, 3, 4, 1, 0, 5, 6, 7, 8, 2, 1, 4, 9, 3, 2, 8, 10, 11, 10, 8, 9, + 12, 6, 5, 11, 12, 11, 5, 0, 3, 10, 7, 6, 12, 9, 4, 7, 12, 85, 86, 87, 88, 89, 90, + 91, 92, 86, 85, 91, 93, 94, 95, 96, 97, 87, 86, 92, 98, 99, 100, 101, 102, 103, 96, 95, 104, 105, + 106, 90, 89, 107, 97, 96, 103, 108, 109, 106, 105, 99, 98, 109, 105, 108, 98, 92, 94, 93, 106, 109, 90, + 106, 93, 91, 108, 103, 104, 110, 111, 100, 99, 95, 102, 110, 104, 110, 102, 101, 111, 101, 100, 111, 107, 89, + 88, 87, 97, 107, 88, 184, 185, 186, 187, 188, 189, 190, 191, 185, 184, 190, 192, 193, 194, 148, 186, 185, 191, + 195, 196, 189, 188, 197, 148, 194, 189, 196, 192, 190, 193, 192, 196, 198, 195, 191, 193, 198, 196, 194, 195, 198, + 197, 188, 187, 186, 148, 197, 187, 271, 272, 273, 274, 241, 266, 275, 276, 277, 272, 271, 278, 279, 280, 281, 282, + 283, 266, 241, 284, 280, 279, 285, 286, 273, 285, 279, 284, 274, 273, 272, 277, 287, 286, 285, 287, 277, 276, 282, + 281, 280, 286, 276, 275, 283, 282, 266, 283, 275, 284, 241, 278, 274, 278, 271, 274}, + {uvector2i{0, 4}, uvector2i{4, 6}, uvector2i{10, 5}, uvector2i{15, 4}, uvector2i{19, 5}, uvector2i{24, 4}, + uvector2i{28, 5}, uvector2i{33, 3}, uvector2i{36, 4}, uvector2i{40, 7}, uvector2i{47, 6}, uvector2i{53, 11}, + uvector2i{64, 4}, uvector2i{68, 9}, uvector2i{77, 3}, uvector2i{80, 5}, uvector2i{85, 6}, uvector2i{91, 4}, + uvector2i{95, 7}, uvector2i{102, 4}, uvector2i{106, 4}, uvector2i{110, 3}, uvector2i{113, 3}, uvector2i{116, 4}, + uvector2i{120, 7}, uvector2i{127, 6}, uvector2i{133, 6}, uvector2i{139, 6}, uvector2i{145, 4}, uvector2i{149, 4}, + uvector2i{153, 4}, uvector2i{157, 4}, uvector2i{161, 3}, uvector2i{164, 4}, uvector2i{168, 4}, uvector2i{172, 8}, + uvector2i{180, 8}, uvector2i{188, 4}, uvector2i{192, 5}, uvector2i{197, 6}, uvector2i{203, 7}, uvector2i{210, 4}, + uvector2i{214, 3}, uvector2i{217, 4}, uvector2i{221, 3}})); + primitiveDescriptions[1] = std::make_shared(MeshDesc( + { + uvector3{17624.99999998905, -8510.00401819123, 17830.90112057791}, + uvector3{17374.99999998905, -8510.00401819123, 17830.90112057791}, + uvector3{17374.99999998905, -8510.00401819123, 18408.25138976753}, + uvector3{17624.99999998905, -8510.00401819123, 18408.25138976753}, + uvector3{17624.99999998906, -3577.50000024273, 20678.68364311939}, + uvector3{17374.99999998906, -3577.50000024273, 20678.68364311939}, + uvector3{17374.99999998906, -3577.50000024273, 21256.03391230901}, + uvector3{17624.99999998906, -3577.50000024273, 21256.03391230901} + }, + {0, 1, 2, 3, 0, 1, 5, 4, 1, 2, 6, 5, 2, 3, 7, 6, 3, 0, 4, 7, 4, 5, 6, 7}, + {uvector2i{0, 4}, uvector2i{4, 4}, uvector2i{8, 4}, uvector2i{12, 4}, uvector2i{16, 4}, uvector2i{20, 4}})); organizer::BlobTree blobTree; blobTree.structure.resize(PRIMITIVE_CNT * 2 - 1); blobTree.primitiveNodeIdx.resize(PRIMITIVE_CNT); - blobTree.structure[0] = {1, 0, 0, 0, 1, 2}; // cube1 - blobTree.structure[1] = {1, 0, 0, 0, 0, 0}; // cube2 - blobTree.structure[2] = {0, OP_UNION, 0, 0, 1, 6 - 2}; // Union of cubes = opNode1 - blobTree.structure[3] = {1, 0, 0, 0, 1, 5 - 3}; // sphere1 - blobTree.structure[4] = {1, 0, 0, 0, 0, 0}; // sphere2 - blobTree.structure[5] = {0, OP_UNION, 0, 0, 0, 0}; // Union of spheres = opNode2 - blobTree.structure[6] = {0, OP_DIFFERENCE, 0, 0, 1, 10 - 6}; // Difference of opNode1 and opNode2 = opNode3 - blobTree.structure[7] = {1, 0, 0, 0, 1, 9 - 7}; // Pyramid (sphere3) - blobTree.structure[8] = {1, 0, 0, 0, 0, 0}; // Cone - blobTree.structure[9] = {0, OP_UNION, 0, 0, 0, 0}; // UNION of Pyramid (sphere3) and Cone = opNode4 - blobTree.structure[10] = { - 0, OP_DIFFERENCE, 0, 0, 1, 12 - 10}; // Difference of opNode3 and opNode4 = opNode5 - // blobTree.structure[11] = {1, 0, 0, 0, 0, 0}; // Cylinder - // blobTree.structure[12] = {0, 2, 0, 0, 1, 0}; // Difference of opNode5 and Cylinder - // blobTree.primitiveNodeIdx = {0, 1, 3, 4, 7, 8, 11}; - // quadratureScene(primitiveDescriptions, uvector3(-1., -1.3, -1.6), uvector3(1.6, 1.6, 2.3), blobTree); - blobTree.primitiveNodeIdx = {0, 1, 3, 4, 7, 8}; - quadratureScene(primitiveDescriptions, uvector3(-0.8, -1.3, -1.6), uvector3(1.6, 1.6, 1.5), blobTree); + blobTree.structure[0] = {1, 0, 0, 0, 1, 2}; + blobTree.structure[1] = {1, 0, 0, 0, 0, 0}; + blobTree.structure[2] = {0, OP_DIFFERENCE, 0, 0, 1, 6 - 2}; + blobTree.primitiveNodeIdx = {0, 1}; + quadratureScene(primitiveDescriptions, uvector3(10000, -20000, 10000), uvector3(25000, -1000, 25000), blobTree); } void casePolyhedronDifFace() diff --git a/gjj/output.cpp b/gjj/output.cpp index e85a0f0..075ad74 100644 --- a/gjj/output.cpp +++ b/gjj/output.cpp @@ -1,19 +1,15 @@ primitiveDescriptions[0] = std::make_shared(MeshDesc( { - uvector3{2629.82969004962, 6801.21455575771, 49030.00000000000}, uvector3{ -2869.82968877607, 6801.18983125328, 49030.00000000000}, uvector3{ -2869.82968877607, 6801.18983125328, 52180.00000000000}, uvector3{ -2629.82969004962, 6801.21455575771, 52180.00000000000}, uvector3{ -2870.01294237553, 8580.02684557581, 49030.00000000000}, uvector3{ -2629.98821659743, 8340.02684557581, 49030.00000000000}, uvector3{ -1939.99863941572, 8340.02684557581, 49030.00000000000}, uvector3{ -1939.99863941572, 8580.02684557581, 49030.00000000000}, uvector3{ -2629.98821659743, 8340.02684557581, 52180.00000000000}, uvector3{ -1939.99863941572, 8340.02684557581, 52180.00000000000}, uvector3{ -2870.01294237553, 8580.02684557581, 52180.00000000000}, uvector3{ -1939.99863941572, 8580.02684557581, 52180.00000000000} + uvector3{17624.99999998905, -8510.00401819123, 17830.90112057791}, uvector3{ +17374.99999998905, -8510.00401819123, 17830.90112057791}, uvector3{ +17374.99999998905, -8510.00401819123, 18408.25138976753}, uvector3{ +17624.99999998905, -8510.00401819123, 18408.25138976753}, uvector3{ +17624.99999998906, -3577.50000024273, 20678.68364311939}, uvector3{ +17374.99999998906, -3577.50000024273, 20678.68364311939}, uvector3{ +17374.99999998906, -3577.50000024273, 21256.03391230901}, uvector3{ +17624.99999998906, -3577.50000024273, 21256.03391230901} }, - {0,1,2,3,4,1,0,5,6,7,6,5,8,9,5,0,3,8,8,3,2,10,11,9,1,4,10,2,4,7,11,10,7,6,9,11 + {0,1,2,3,0,1,5,4,1,2,6,5,2,3,7,6,3,0,4,7,4,5,6,7 }, - {uvector2i{0, 4}, uvector2i{4, 6}, uvector2i{10, 4}, uvector2i{14, 4}, uvector2i{18, 6}, uvector2i{24, 4}, uvector2i{28, 4}, uvector2i{32, 4}} + {uvector2i{0, 4}, uvector2i{4, 4}, uvector2i{8, 4}, uvector2i{12, 4}, uvector2i{16, 4}, uvector2i{20, 4}} )); \ No newline at end of file diff --git a/gjj/polyhedronReader.py b/gjj/polyhedronReader.py index 5f8af91..26ce24a 100644 --- a/gjj/polyhedronReader.py +++ b/gjj/polyhedronReader.py @@ -1,7 +1,9 @@ import re # 读取输入文件 -with open("PMCases/PolyDifPolyThickFace/entDataZJU_Des.txt", "r") as file: +# with open("PMCases/PolyDifFace/entDataZJU_Des.txt", "r") as file: +with open("PMCases/PolyDifPoly/entDataZJU_Src.txt", "r") as file: + # with open("PMCases/PolyDifPolyThickFace/entDataZJU_Des.txt", "r") as file: data = file.read() # 使用正则表达式提取vertexInfo和indexInfo