diff --git a/.gitignore b/.gitignore index fa3739c..68d9864 100644 --- a/.gitignore +++ b/.gitignore @@ -110,4 +110,6 @@ distribute/* # Backup backup/* -.cache/ \ No newline at end of file +.cache/ + +.vscode/* diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 68de46e..0b0b0a8 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,7 +6,7 @@ "executable": "C:\\WINDOWS\\System32\\cmd.exe", "args": [ "/C", - "D:\\Intel\\oneAPI\\2024.2\\oneapi-vars.bat", + "D:\\download\\IntelOneAPI\\2025.0\\oneapi-vars.bat", "&&", ] } @@ -25,6 +25,20 @@ "command": "xmake config -p windows -m debug", "problemMatcher": [] }, + { + "label": "build", + "type": "shell", + "command": "xmake", + "args": [ + // "-v", + "-j8" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [] + }, { "label": "update compile_commands", "type": "shell", @@ -36,6 +50,6 @@ "type": "shell", "command": "xmake run -d implicit_surface_integrator", "problemMatcher": [] - } + }, ] } \ No newline at end of file diff --git a/application/main.cpp b/application/main.cpp index 547a245..5e95095 100644 --- a/application/main.cpp +++ b/application/main.cpp @@ -7,55 +7,94 @@ #include #include "primitive_descriptor.h" +#include "internal_primitive_desc.hpp" + +void testExtrudeSDF() { + printf("Testing extrude polyline SDF\n"); + auto profilePoints = std::array{raw_vector3d_t{-1., 0., 0.}, raw_vector3d_t{1., 0., 0.}}; + auto profileBulges = std::array{1.0, 1.0}; + polyline_descriptor_t profile{ + 2, + profilePoints.data(), + 2, + profileBulges.data(), + raw_vector3d_t{0., 0., 1.}, + true + }; + auto axisPoints = std::array{raw_vector3d_t{0., 0., 0.}, raw_vector3d_t{0., 0., 2.}}; + auto axisBulges = std::array{0.0}; + polyline_descriptor_t axis{ + 2, + axisPoints.data(), + 1, + axisBulges.data(), + raw_vector3d_t{0., 1., 0.}, + false + }; + + extrude_polyline_descriptor_t extrude{ + 1, + &profile, + axis + }; + + aabb_t<> aabb{}; + internal::extrude_polyline extrude_polyline{extrude, aabb}; + Eigen::Vector3d p{1., 2., 1.}; + double res = extrude_polyline.evaluate_sdf(p); + printf("SDF at (%f, %f, %f) is %f\n", p.x(), p.y(), p.z(), res); +} int main() { - std::cout << "Setting scene..." << std::endl; - sphere_descriptor_t sphere1{ - {.0, .0, .0}, - 0.5 - }; - sphere_descriptor_t sphere2{ - {.01, .0, .0}, - 0.5 - }; - box_descriptor_t box{ - {0., 0., 0.}, - {1., 1., 1.} - }; - auto points = std::array{ - raw_vector3d_t{-7200.0000000000282, -7479.9999999993715, 0.0}, - raw_vector3d_t{-4420.0000000000000, -7479.9999999993724, 0.0}, - raw_vector3d_t{-4420.0000000000000, -7719.9999999993724, 0.0}, - raw_vector3d_t{-7200.0000000000282, -7719.9999999993715, 0.0} - }; - // auto buldges = std::array{0.0, 0.0, 0.0, 0.0}; - // extrude_descriptor_t extrude{ - // static_cast(buldges.size()), - // raw_vector3d_t{0.0, 0.0, 78.000000000251021}, - // points.data(), - // buldges.data() + testExtrudeSDF(); + + // std::cout << "Setting scene..." << std::endl; + // sphere_descriptor_t sphere1{ + // {.0, .0, .0}, + // 0.5 + // }; + // sphere_descriptor_t sphere2{ + // {.01, .0, .0}, + // 0.5 + // }; + // box_descriptor_t box{ + // {0., 0., 0.}, + // {1., 1., 1.} + // }; + // auto points = std::array{ + // raw_vector3d_t{-7200.0000000000282, -7479.9999999993715, 0.0}, + // raw_vector3d_t{-4420.0000000000000, -7479.9999999993724, 0.0}, + // raw_vector3d_t{-4420.0000000000000, -7719.9999999993724, 0.0}, + // raw_vector3d_t{-7200.0000000000282, -7719.9999999993715, 0.0} // }; - // auto tree_root = blobtree_new_node(&sphere1, PRIMITIVE_TYPE_SPHERE); - // auto tree_root = blobtree_new_node(&box, PRIMITIVE_TYPE_BOX); - // auto tree_root = blobtree_new_node(&sphere1, PRIMITIVE_TYPE_SPHERE); - // auto another_sphere_node = blobtree_new_node(&sphere2, PRIMITIVE_TYPE_SPHERE); - // virtual_node_boolean_union(&tree_root, &another_sphere_node); - auto tree_root = make_primitive_node_by_move(box); - // auto tree_root = make_primitive_node_by_move(extrude); - - std::cout << "Setting environments..." << std::endl; - setting_descriptor setting_desc{21, 1e-5}; - update_setting(setting_desc); - update_environment(&tree_root); - - std::cout << "Executing solver..." << std::endl; - auto result = execute_solver(&tree_root); - std::cout << "Surface integral result: " << result.surf_int_result << std::endl; - std::cout << "Volume integral result: " << result.vol_int_result << std::endl; - - std::cout << "Time statistics: " << std::endl; - print_statistics(); + // // auto buldges = std::array{0.0, 0.0, 0.0, 0.0}; + // // extrude_descriptor_t extrude{ + // // static_cast(buldges.size()), + // // raw_vector3d_t{0.0, 0.0, 78.000000000251021}, + // // points.data(), + // // buldges.data() + // // }; + // // auto tree_root = blobtree_new_node(&sphere1, PRIMITIVE_TYPE_SPHERE); + // // auto tree_root = blobtree_new_node(&box, PRIMITIVE_TYPE_BOX); + // // auto tree_root = blobtree_new_node(&sphere1, PRIMITIVE_TYPE_SPHERE); + // // auto another_sphere_node = blobtree_new_node(&sphere2, PRIMITIVE_TYPE_SPHERE); + // // virtual_node_boolean_union(&tree_root, &another_sphere_node); + // auto tree_root = make_primitive_node_by_move(box); + // // auto tree_root = make_primitive_node_by_move(extrude); + + // std::cout << "Setting environments..." << std::endl; + // setting_descriptor setting_desc{21, 1e-5}; + // update_setting(setting_desc); + // update_environment(&tree_root); + + // std::cout << "Executing solver..." << std::endl; + // auto result = execute_solver(&tree_root); + // std::cout << "Surface integral result: " << result.surf_int_result << std::endl; + // std::cout << "Volume integral result: " << result.vol_int_result << std::endl; + + // std::cout << "Time statistics: " << std::endl; + // print_statistics(); return 0; } \ No newline at end of file