Fix arachne wall ordering (#7959)

* Revert "SPE-1950: Optimization of computation complexity of perimeter ordering for Arachne generator."

This reverts commit 47ec9b9b06.

* Revert "SPE-1963: Improve ordering of perimeters with Arachne perimeter generator"

This reverts commit babb84c70a.
This commit is contained in:
Noisyfox 2025-01-22 09:58:34 +08:00 committed by GitHub
parent a3de7cf0bd
commit 2253ab304a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 756 additions and 901 deletions

View file

@ -199,8 +199,6 @@ struct ExtrusionLine
bool is_contour() const;
double area() const;
bool is_external_perimeter() const { return this->inset_idx == 0; }
};
template<class PathType>
@ -227,7 +225,6 @@ static inline Slic3r::ThickPolyline to_thick_polyline(const PathType &path)
static inline Polygon to_polygon(const ExtrusionLine &line)
{
Polygon out;
assert(line.is_closed);
assert(line.junctions.size() >= 3);
assert(line.junctions.front().p == line.junctions.back().p);
out.points.reserve(line.junctions.size() - 1);
@ -236,11 +233,24 @@ static inline Polygon to_polygon(const ExtrusionLine &line)
return out;
}
Points to_points(const ExtrusionLine &extrusion_line);
BoundingBox get_extents(const ExtrusionLine &extrusion_line);
static Points to_points(const ExtrusionLine &extrusion_line)
{
Points points;
points.reserve(extrusion_line.junctions.size());
for (const ExtrusionJunction &junction : extrusion_line.junctions)
points.emplace_back(junction.p);
return points;
}
#if 0
static BoundingBox get_extents(const ExtrusionLine &extrusion_line)
{
BoundingBox bbox;
for (const ExtrusionJunction &junction : extrusion_line.junctions)
bbox.merge(junction.p);
return bbox;
}
static BoundingBox get_extents(const std::vector<ExtrusionLine> &extrusion_lines)
{
BoundingBox bbox;
@ -271,8 +281,6 @@ static std::vector<Points> to_points(const std::vector<const ExtrusionLine *> &e
#endif
using VariableWidthLines = std::vector<ExtrusionLine>; //<! The ExtrusionLines generated by libArachne
using Perimeter = VariableWidthLines;
using Perimeters = std::vector<Perimeter>;
} // namespace Slic3r::Arachne