From f874b618817f0a9e965e8f2f3919643984462658 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 8 Jan 2020 10:10:24 +0100 Subject: [PATCH] Transform the position AND the normals of drainhole points --- src/libslic3r/SLAPrint.cpp | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 897963f19..1e00e6edb 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -1165,30 +1165,29 @@ const TriangleMesh &SLAPrintObject::transformed_mesh() const { return m_transformed_rmesh.get(); } -template::value_type> -std::vector transform_pts(It from, It to, Trafo &&tr) -{ - auto ret = reserve_vector(to - from); - for(auto it = from; it != to; ++it) { - V v = *it; - v.pos = tr * it->pos; - ret.emplace_back(std::move(v)); - } - return ret; -} - sla::SupportPoints SLAPrintObject::transformed_support_points() const { assert(m_model_object != nullptr); - auto& spts = m_model_object->sla_support_points; - return transform_pts(spts.begin(), spts.end(), trafo().cast()); + auto spts = m_model_object->sla_support_points; + auto tr = trafo().cast(); + for (sla::SupportPoint& suppt : spts) { + suppt.pos = tr * suppt.pos; + } + + return spts; } sla::DrainHoles SLAPrintObject::transformed_drainhole_points() const { assert(m_model_object != nullptr); - auto& spts = m_model_object->sla_drain_holes; - return transform_pts(spts.begin(), spts.end(), trafo().cast()); + auto pts = m_model_object->sla_drain_holes; + auto tr = trafo().cast(); + for (sla::DrainHole &hl : pts) { + hl.pos = tr * hl.pos; + hl.normal = tr * hl.normal; + } + + return pts; } DynamicConfig SLAPrintStatistics::config() const