94 {
95
98 const double v1_sqr_norm = v1.squaredNorm();
100 for (auto it_contour_and_segment = cell_data_range.first; it_contour_and_segment != cell_data_range.second; ++it_contour_and_segment) {
101 Line grid_line =
grid.
line(*it_contour_and_segment);
102 const Vec2d v2 = grid_line.vector().cast<
double>();
103 double heuristic_thr_sqr =
Slic3r::sqr(heuristic_thr_part + grid_line.length());
104
105
106
107 if ((grid_line.a -
line_to_test.
a).cast<
double>().squaredNorm() > heuristic_thr_sqr ||
108 (grid_line.b -
line_to_test.
a).cast<
double>().squaredNorm() > heuristic_thr_sqr ||
109 (grid_line.a -
line_to_test.
b).cast<
double>().squaredNorm() > heuristic_thr_sqr ||
110 (grid_line.b -
line_to_test.
b).cast<
double>().squaredNorm() > heuristic_thr_sqr)
111 continue;
112
113
115
121 Line line_to_test_projected;
123
124 if ((line_to_test_projected.a - grid_line.a).cast<double>().squaredNorm() > (line_to_test_projected.b - grid_line.a).cast<double>().squaredNorm())
125 line_to_test_projected.reverse();
126
128 {
130 painted_lines.push_back({it_contour_and_segment->first, it_contour_and_segment->second, line_to_test_projected, this->
color});
131 }
132 }
133 }
134 }
135 }
136
137 return true;
138 }
std::pair< std::vector< std::pair< size_t, size_t > >::const_iterator, std::vector< std::pair< size_t, size_t > >::const_iterator > cell_data_range(coord_t row, coord_t col) const
Definition EdgeGrid.hpp:336
Line line(const std::pair< size_t, size_t > &contour_and_segment_idx) const
Definition EdgeGrid.hpp:351
Vector vector() const
Definition Line.hpp:181
double length() const
Definition Line.hpp:165
double distance_to_squared(const Point &point) const
Definition Line.hpp:169
Point b
Definition Line.hpp:198
Point a
Definition Line.hpp:197
Eigen::Matrix< double, 2, 1, Eigen::DontAlign > Vec2d
Definition Point.hpp:51
static bool project_line_on_line(const Line &projection_l, const Line &projected_l, Line *new_projected)
Definition MultiMaterialSegmentation.cpp:53
constexpr T sqr(T x)
Definition libslic3r.h:258
static const double append_threshold2
Definition MultiMaterialSegmentation.cpp:149
static const double append_threshold
Definition MultiMaterialSegmentation.cpp:148
Line line_to_test
Definition MultiMaterialSegmentation.cpp:143
int color
Definition MultiMaterialSegmentation.cpp:145
static const double cos_threshold2
Definition MultiMaterialSegmentation.cpp:147