//#include //#include //#include "libslic3r/TriangleMesh.hpp" //#include "libslic3r/SLA/SupportTreeBuildsteps.hpp" //#include "libslic3r/SLA/SupportTreeMesher.hpp" //TEST_CASE("Test bridge_mesh_intersect on a cube's wall", "[SLABridgeMeshInters]") { // using namespace Slic3r; // TriangleMesh cube = make_cube(10., 10., 10.); // sla::SupportConfig cfg = {}; // use default config // sla::SupportPoints pts = {{10.f, 5.f, 5.f, float(cfg.head_front_radius_mm), false}}; // sla::SupportableMesh sm{cube, pts, cfg}; // size_t steps = 45; // SECTION("Bridge is straight horizontal and pointing away from the cube") { // sla::Bridge bridge(pts[0].pos.cast(), Vec3d{15., 5., 5.}, // pts[0].head_front_radius); // auto hit = sla::query_hit(sm, bridge); // REQUIRE(std::isinf(hit.distance())); // cube.merge(sla::to_triangle_mesh(get_mesh(bridge, steps))); // cube.require_shared_vertices(); // cube.WriteOBJFile("cube1.obj"); // } // SECTION("Bridge is tilted down in 45 degrees, pointing away from the cube") { // sla::Bridge bridge(pts[0].pos.cast(), Vec3d{15., 5., 0.}, // pts[0].head_front_radius); // auto hit = sla::query_hit(sm, bridge); // REQUIRE(std::isinf(hit.distance())); // cube.merge(sla::to_triangle_mesh(get_mesh(bridge, steps))); // cube.require_shared_vertices(); // cube.WriteOBJFile("cube2.obj"); // } //} //TEST_CASE("Test bridge_mesh_intersect on a sphere", "[SLABridgeMeshInters]") { // using namespace Slic3r; // TriangleMesh sphere = make_sphere(1.); // sla::SupportConfig cfg = {}; // use default config // cfg.head_back_radius_mm = cfg.head_front_radius_mm; // sla::SupportPoints pts = {{1.f, 0.f, 0.f, float(cfg.head_front_radius_mm), false}}; // sla::SupportableMesh sm{sphere, pts, cfg}; // size_t steps = 45; // SECTION("Bridge is straight horizontal and pointing away from the sphere") { // sla::Bridge bridge(pts[0].pos.cast(), Vec3d{2., 0., 0.}, // pts[0].head_front_radius); // auto hit = sla::query_hit(sm, bridge); // sphere.merge(sla::to_triangle_mesh(get_mesh(bridge, steps))); // sphere.require_shared_vertices(); // sphere.WriteOBJFile("sphere1.obj"); // REQUIRE(std::isinf(hit.distance())); // } // SECTION("Bridge is tilted down 45 deg and pointing away from the sphere") { // sla::Bridge bridge(pts[0].pos.cast(), Vec3d{2., 0., -2.}, // pts[0].head_front_radius); // auto hit = sla::query_hit(sm, bridge); // sphere.merge(sla::to_triangle_mesh(get_mesh(bridge, steps))); // sphere.require_shared_vertices(); // sphere.WriteOBJFile("sphere2.obj"); // REQUIRE(std::isinf(hit.distance())); // } // SECTION("Bridge is tilted down 90 deg and pointing away from the sphere") { // sla::Bridge bridge(pts[0].pos.cast(), Vec3d{1., 0., -2.}, // pts[0].head_front_radius); // auto hit = sla::query_hit(sm, bridge); // sphere.merge(sla::to_triangle_mesh(get_mesh(bridge, steps))); // sphere.require_shared_vertices(); // sphere.WriteOBJFile("sphere3.obj"); // REQUIRE(std::isinf(hit.distance())); // } //}