Remove seam 'visit forward' assert and rename it to better convey what the function does.

This commit is contained in:
Martin Šach 2024-05-30 10:47:18 +02:00
parent 114d370f92
commit 3543f8c738
6 changed files with 20 additions and 19 deletions

View File

@ -112,8 +112,8 @@ std::optional<std::size_t> snap_to_angle(
}
return false;
}};
Geometry::visit_backward(search_start, positions.size(), visitor);
Geometry::visit_forward(search_start, positions.size(), visitor);
Geometry::visit_near_backward(search_start, positions.size(), visitor);
Geometry::visit_near_forward(search_start, positions.size(), visitor);
if (match) {
return match;
}
@ -121,8 +121,8 @@ std::optional<std::size_t> snap_to_angle(
min_distance = std::numeric_limits<double>::infinity();
angle_type = AngleType::concave;
Geometry::visit_backward(search_start, positions.size(), visitor);
Geometry::visit_forward(search_start, positions.size(), visitor);
Geometry::visit_near_backward(search_start, positions.size(), visitor);
Geometry::visit_near_forward(search_start, positions.size(), visitor);
return match;
}

View File

@ -59,7 +59,7 @@ Vec2d get_polygon_normal(
std::optional<std::size_t> previous_index;
std::optional<std::size_t> next_index;
visit_forward(index, points.size(), [&](const std::size_t index_candidate) {
visit_near_forward(index, points.size(), [&](const std::size_t index_candidate) {
if (index == index_candidate) {
return false;
}
@ -70,7 +70,7 @@ Vec2d get_polygon_normal(
}
return false;
});
visit_backward(index, points.size(), [&](const std::size_t index_candidate) {
visit_near_backward(index, points.size(), [&](const std::size_t index_candidate) {
const double distance{(points[index_candidate] - points[index]).norm()};
if (distance > min_arm_length) {
previous_index = index_candidate;
@ -204,36 +204,34 @@ std::vector<Vec2d> oversample_edge(const Vec2d &from, const Vec2d &to, const dou
return result;
}
void visit_forward(
void visit_near_forward(
const std::size_t start_index,
const std::size_t loop_size,
const std::function<bool(std::size_t)> &visitor
) {
std::size_t last_index{loop_size - 1};
std::size_t index{start_index};
for (unsigned _{0}; _ < 30; ++_) { // Infinite loop prevention
for (unsigned _{0}; _ < 30; ++_) { // Do not visit too far.
if (visitor(index)) {
return;
}
index = index == last_index ? 0 : index + 1;
}
assert(false);
}
void visit_backward(
void visit_near_backward(
const std::size_t start_index,
const std::size_t loop_size,
const std::function<bool(std::size_t)> &visitor
) {
std::size_t last_index{loop_size - 1};
std::size_t index{start_index == 0 ? loop_size - 1 : start_index - 1};
for (unsigned _{0}; _ < 30; ++_) { // Infinite loop prevention
for (unsigned _{0}; _ < 30; ++_) { // Do not visit too far.
if (visitor(index)) {
return;
}
index = index == 0 ? last_index : index - 1;
}
assert(false);
}
std::vector<Vec2d> unscaled(const Points &points) {
@ -300,7 +298,7 @@ std::vector<double> get_vertex_angles(const std::vector<Vec2d> &points, const do
std::optional<std::size_t> previous_index;
std::optional<std::size_t> next_index;
visit_forward(index, points.size(), [&](const std::size_t index_candidate) {
visit_near_forward(index, points.size(), [&](const std::size_t index_candidate) {
if (index == index_candidate) {
return false;
}
@ -311,7 +309,7 @@ std::vector<double> get_vertex_angles(const std::vector<Vec2d> &points, const do
}
return false;
});
visit_backward(index, points.size(), [&](const std::size_t index_candidate) {
visit_near_backward(index, points.size(), [&](const std::size_t index_candidate) {
const double distance{(points[index_candidate] - points[index]).norm()};
if (distance > min_arm_length) {
previous_index = index_candidate;

View File

@ -120,12 +120,12 @@ void iterate_nested(const NestedVector &nested_vector, const std::function<void(
});
}
void visit_forward(
void visit_near_forward(
const std::size_t start_index,
const std::size_t loop_size,
const std::function<bool(std::size_t)> &visitor
);
void visit_backward(
void visit_near_backward(
const std::size_t start_index,
const std::size_t loop_size,
const std::function<bool(std::size_t)> &visitor

View File

@ -157,7 +157,7 @@ std::vector<AngleType> merge_angle_types(
resulting_type = smooth_angle_type;
// Check if there is a sharp angle in the vicinity. If so, do not use the smooth angle.
Geometry::visit_forward(index, angle_types.size(), [&](const std::size_t forward_index) {
Geometry::visit_near_forward(index, angle_types.size(), [&](const std::size_t forward_index) {
const double distance{(points[forward_index] - points[index]).norm()};
if (distance > min_arm_length) {
return true;
@ -167,7 +167,7 @@ std::vector<AngleType> merge_angle_types(
}
return false;
});
Geometry::visit_backward(index, angle_types.size(), [&](const std::size_t backward_index) {
Geometry::visit_near_backward(index, angle_types.size(), [&](const std::size_t backward_index) {
const double distance{(points[backward_index] - points[index]).norm()};
if (distance > min_arm_length) {
return true;

View File

@ -219,7 +219,7 @@ std::optional<Vec2d> offset_along_loop_lines(
double distance{0};
Vec2d previous_point{point};
std::optional<Vec2d> offset_point;
Geometry::visit_forward(loop_line_index, loop_lines.size(), [&](std::size_t index) {
Geometry::visit_near_forward(loop_line_index, loop_lines.size(), [&](std::size_t index) {
const Vec2d next_point{loop_lines[index].b};
const Vec2d edge{next_point - previous_point};

View File

@ -1,6 +1,9 @@
#ifndef slic3r_GUI_WebView_hpp_
#define slic3r_GUI_WebView_hpp_
#include <vector>
#include <string>
class wxWebView;
class wxWindow;
class wxString;