Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortamasmeszaros <meszaros.q@gmail.com>2021-05-21 15:08:05 +0300
committertamasmeszaros <meszaros.q@gmail.com>2021-06-08 11:27:35 +0300
commit1009f788626cd49482c05b59ef9109d9dc7f049e (patch)
tree3d3d47d5d895ee69b52214e2631e007a1c0d78d6 /src/libslic3r/TriangleMesh.cpp
parent1c35dfe59175cbc3221d54dc2af20d57ad0f9494 (diff)
SLA backend refactored, except Hollowing
Diffstat (limited to 'src/libslic3r/TriangleMesh.cpp')
-rw-r--r--src/libslic3r/TriangleMesh.cpp31
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);
+}
+
}