TriangleSelector: edge limit is derived from cursor size

This commit is contained in:
Lukas Matena 2020-07-24 17:45:49 +02:00
parent 74a1aeff8e
commit 7ddb64783b
4 changed files with 13 additions and 6 deletions

View file

@ -35,14 +35,20 @@ void TriangleSelector::Triangle::set_division(int sides_to_split, int special_si
void TriangleSelector::select_patch(const Vec3f& hit, int facet_start,
const Vec3f& source, const Vec3f& dir,
float radius_sqr, FacetSupportType new_state)
float radius, FacetSupportType new_state)
{
assert(facet_start < m_orig_size_indices);
assert(is_approx(dir.norm(), 1.f));
// Save current cursor center, squared radius and camera direction,
// so we don't have to pass it around.
m_cursor = {hit, source, dir, radius_sqr};
m_cursor = {hit, source, dir, radius*radius};
// In case user changed cursor size since last time, update triangle edge limit.
if (m_old_cursor_radius != radius) {
set_edge_limit(radius / 5.f);
m_old_cursor_radius = radius;
}
// Now start with the facet the pointer points to and check all adjacent facets.
std::vector<int> facets_to_check{facet_start};

View file

@ -1,7 +1,7 @@
#ifndef libslic3r_TriangleSelector_hpp_
#define libslic3r_TriangleSelector_hpp_
#define PRUSASLICER_TRIANGLE_SELECTOR_DEBUG
// #define PRUSASLICER_TRIANGLE_SELECTOR_DEBUG
#include "Point.hpp"
@ -28,7 +28,7 @@ public:
int facet_start, // facet that point belongs to
const Vec3f& source, // camera position (mesh coords)
const Vec3f& dir, // direction of the ray (mesh coords)
float radius_sqr, // squared radius of the cursor
float radius, // radius of the cursor
FacetSupportType new_state); // enforcer or blocker?
// Get facets currently in the given state.
@ -130,6 +130,7 @@ protected:
};
Cursor m_cursor;
float m_old_cursor_radius;
// Private functions:
bool select_triangle(int facet_idx, FacetSupportType type,