From bcbb08c303dfedcddb13a2fefa41bb45e496d54b Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Mon, 24 Feb 2025 21:01:19 +0800 Subject: [PATCH] FIX:HeightRange must use world cs jira: none Change-Id: Ib0d1efa0a5b2f389d3ec0ff68f82af503084605a --- src/libslic3r/TriangleSelector.cpp | 11 +++++++++++ src/libslic3r/TriangleSelector.hpp | 3 +-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/TriangleSelector.cpp b/src/libslic3r/TriangleSelector.cpp index d9e8b8654..fa3b94034 100644 --- a/src/libslic3r/TriangleSelector.cpp +++ b/src/libslic3r/TriangleSelector.cpp @@ -1094,6 +1094,17 @@ bool TriangleSelector::Circle::is_edge_inside_cursor(const Triangle &tr, const s return false; } +TriangleSelector::HeightRange::HeightRange(float z_world_, const Vec3f &source_, float height_, const Transform3d &trafo_, const ClippingPlane &clipping_plane_) + : SinglePointCursor(Vec3f(0.f, 0.f, 0.f), source_, 1.f, trafo_, clipping_plane_), m_z_world(z_world_), m_height(height_) +{ + uniform_scaling = false;//HeightRange must use world cs + // overwrite base + source = trafo * source; + radius = height_; + radius_sqr = Slic3r::sqr(height_); + trafo_normal = trafo.linear().inverse().transpose(); +} + // BBS bool TriangleSelector::HeightRange::is_pointer_in_triangle(const Vec3f& p1_, const Vec3f& p2_, const Vec3f& p3_) const { diff --git a/src/libslic3r/TriangleSelector.hpp b/src/libslic3r/TriangleSelector.hpp index ea303995c..a9a357880 100644 --- a/src/libslic3r/TriangleSelector.hpp +++ b/src/libslic3r/TriangleSelector.hpp @@ -161,8 +161,7 @@ public: public: HeightRange() = delete; // BBS: set cursor_radius to 0.1 for high smooth edge - explicit HeightRange(float z_world_, const Vec3f& source_, float height_, const Transform3d& trafo_, const ClippingPlane& clipping_plane_) - : SinglePointCursor(Vec3f(0.f, 0.f, 0.f), source_, 1.f, trafo_, clipping_plane_), m_z_world(z_world_), m_height(height_) {} + explicit HeightRange(float z_world_, const Vec3f &source_, float height_, const Transform3d &trafo_, const ClippingPlane &clipping_plane_); ~HeightRange() override = default; bool is_pointer_in_triangle(const Vec3f& p1, const Vec3f& p2, const Vec3f& p3) const override;