diff options
author | tamasmeszaros <meszaros.q@gmail.com> | 2021-05-21 15:08:05 +0300 |
---|---|---|
committer | tamasmeszaros <meszaros.q@gmail.com> | 2021-06-08 11:27:35 +0300 |
commit | 1009f788626cd49482c05b59ef9109d9dc7f049e (patch) | |
tree | 3d3d47d5d895ee69b52214e2631e007a1c0d78d6 /src/libslic3r/TriangleMesh.cpp | |
parent | 1c35dfe59175cbc3221d54dc2af20d57ad0f9494 (diff) |
SLA backend refactored, except Hollowing
Diffstat (limited to 'src/libslic3r/TriangleMesh.cpp')
-rw-r--r-- | src/libslic3r/TriangleMesh.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index a8e952a2b..39eb68735 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1130,4 +1130,35 @@ TriangleMesh make_sphere(double radius, double fa) return mesh; } +void its_merge(indexed_triangle_set &A, const indexed_triangle_set &B) +{ + auto N = int(A.vertices.size()); + auto N_f = A.indices.size(); + + A.vertices.insert(A.vertices.end(), B.vertices.begin(), B.vertices.end()); + A.indices.insert(A.indices.end(), B.indices.begin(), B.indices.end()); + + for(size_t n = N_f; n < A.indices.size(); n++) + A.indices[n] += Vec3i{N, N, N}; +} + +void its_merge(indexed_triangle_set &A, const std::vector<Vec3f> &triangles) +{ + const size_t offs = A.vertices.size(); + A.vertices.insert(A.vertices.end(), triangles.begin(), triangles.end()); + A.indices.reserve(A.indices.size() + A.vertices.size() / 3); + + for(int i = int(offs); i < int(A.vertices.size()); i += 3) + A.indices.emplace_back(i, i + 1, i + 2); +} + +void its_merge(indexed_triangle_set &A, const Pointf3s &triangles) +{ + auto trianglesf = reserve_vector<Vec3f> (triangles.size()); + for (auto &t : triangles) + trianglesf.emplace_back(t.cast<float>()); + + its_merge(A, trianglesf); +} + } |