|
|
@ -7,55 +7,94 @@ |
|
|
|
|
|
|
|
#include <construct_helper.hpp> |
|
|
|
#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<uint32_t>(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 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 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<uint32_t>(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; |
|
|
|
} |