#include #include #include #include int main() { auto primitive_data_center = create_primitive_data_center(); //auto sphere1 = create_primitive(primitive_data_center, PRIMITIVE_TYPE_SPHERE); //auto sphere2 = create_primitive(primitive_data_center, PRIMITIVE_TYPE_SPHERE); //auto cylinder1 = create_primitive(primitive_data_center, PRIMITIVE_TYPE_CYLINDER); //auto cylinder2 = create_primitive(primitive_data_center, PRIMITIVE_TYPE_CYLINDER); //auto polyline_extrude = create_primitive(primitive_data_center, PRIMITIVE_TYPE_EXTRUDE_POLYLINE); auto helixline_extrude = create_primitive(primitive_data_center, PRIMITIVE_TYPE_EXTRUDE_HELIXLINE); //primitive_apply_translation(cylinder1, {1.0, 0.0, 0.0}); //primitive_apply_translation(sphere1, {1.0, 0.0, 0.0}); //primitive_apply_translation(polyline_extrude, {0.3, 0.0, 0.0}); //primitive_apply_scale(cylinder1, {0.5, 1.0, 1.5}); //primitive_apply_scale(sphere2, {0.5, 1.0, 1.5}); ////primitive_apply_scale(polyline_extrude, {1.3, 2.0, 0.6}); ////primitive_apply_scale(helixline_extrude, {0.7, 2.0, 1.0}); //double angle_x = 90.0 * pi / 180.0; // 角度转弧度 //primitive_apply_rotation(cylinder1, {sin(angle_x / 2.0), 0.0, 0.0, cos(angle_x / 2.0)}); //primitive_apply_rotation(sphere1, {sin(angle_x / 2.0), 0.0, 0.0, cos(angle_x / 2.0)}); ////primitive_apply_rotation(polyline_extrude, {sin(angle_x / 3.0), 0.0, 0.0, cos(angle_x / 1.0)}); //std::cout << "primitive created..." << std::endl; auto runtime_blobtree = create_blobtree(); auto node_iter = blobtree_add_primitive_node(runtime_blobtree, helixline_extrude); //auto node_iter1 = blobtree_add_primitive_node(runtime_blobtree, cylinder1); //auto node_iter2 = blobtree_add_primitive_node(runtime_blobtree, sphere1); //auto node_iter3 = blobtree_add_operation_node(runtime_blobtree, node_iter1, node_iter2, INTERSECTION_OP); //auto node_iter4 = blobtree_add_primitive_node(runtime_blobtree, sphere2); //auto node_iter5 = blobtree_add_operation_node(runtime_blobtree, node_iter3, node_iter4, UNION_OP); //auto node_iter6 = blobtree_add_primitive_node(runtime_blobtree, cylinder2); //auto node_iter7 = blobtree_add_operation_node(runtime_blobtree, node_iter6, node_iter5, DIFFERENCE_OP); //auto node_iter8 = blobtree_add_primitive_node(runtime_blobtree, polyline_extrude); //auto node_iter9 = blobtree_add_operation_node(runtime_blobtree, node_iter7, node_iter8, UNION_OP); auto baked_blobtree = bake_blobtree(runtime_blobtree); destroy_blobtree(runtime_blobtree); std::cout << "blobtree created..." << std::endl; s_settings settings{}; settings.resolution = 48; // 72 settings.scene_aabb_margin = 1e-5; settings.restricted_primitive_bounding_test = true; auto solver = create_solver(baked_blobtree, settings); auto result = generate_polymesh(solver); print_statistics(solver); destroy_solver(solver); destroy_baked_blobtree(baked_blobtree); //destroy_primitive(sphere1); //destroy_primitive(cylinder1); //destroy_primitive(polyline_extrude); destroy_primitive(helixline_extrude); destroy_primitive_data_center(primitive_data_center); return 0; }