diff options
author | Lukas Matena <lukasmatena@seznam.cz> | 2021-03-12 12:29:17 +0300 |
---|---|---|
committer | Lukas Matena <lukasmatena@seznam.cz> | 2021-05-28 17:44:13 +0300 |
commit | 97b7ef7dc0e3d5185eae67edc2d14236a8b659a1 (patch) | |
tree | cb1a3b581782810f28ffd26e629cb6bc1f156cba /src/libslic3r | |
parent | 0c7095d807efd960fb779a26b2647ec6e1e45c02 (diff) |
Removed GLU calls from all the gizmos
Diffstat (limited to 'src/libslic3r')
-rw-r--r-- | src/libslic3r/TriangleMesh.cpp | 27 | ||||
-rw-r--r-- | src/libslic3r/TriangleMesh.hpp | 4 |
2 files changed, 28 insertions, 3 deletions
diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index fba1429ea..99f2c9641 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1014,6 +1014,33 @@ TriangleMesh make_cylinder(double r, double h, double fa) return mesh; } + +TriangleMesh make_cone(double r, double h, double fa) +{ + Pointf3s vertices; + std::vector<Vec3i> facets; + vertices.reserve(3+size_t(2*PI/fa)); + vertices.reserve(3+2*size_t(2*PI/fa)); + + vertices = { Vec3d::Zero(), Vec3d(0., 0., h) }; // base center and top vertex + size_t i = 0; + for (double angle=0; angle<2*PI; angle+=fa) { + vertices.emplace_back(r*std::cos(angle), r*std::sin(angle), 0.); + if (angle > 0.) { + facets.emplace_back(0, i+2, i+1); + facets.emplace_back(1, i+1, i+2); + } + ++i; + } + facets.emplace_back(0, 2, i+1); // close the shape + facets.emplace_back(1, i+1, 2); + + TriangleMesh mesh(std::move(vertices), std::move(facets)); + mesh.repair(); + return mesh; +} + + // Generates mesh for a sphere centered about the origin, using the generated angle // to determine the granularity. // Default angle is 1 degree. diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index 49b11465e..24447d896 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -122,10 +122,8 @@ Polygon its_convex_hull_2d_above(const indexed_triangle_set &its, const Matrix3f Polygon its_convex_hull_2d_above(const indexed_triangle_set &its, const Transform3f &t, const float z); TriangleMesh make_cube(double x, double y, double z); - -// Generate a TriangleMesh of a cylinder TriangleMesh make_cylinder(double r, double h, double fa=(2*PI/360)); - +TriangleMesh make_cone(double r, double h, double fa=(2*PI/360)); TriangleMesh make_sphere(double rho, double fa=(2*PI/360)); } |