Follow-up to 5276bd98d7
:
WIP: MutablePolygon - linked list based polygon implementation allowing rapid insertion and removal of points. WIP: porting smooth_outward() from Cura.
This commit is contained in:
parent
6a46b71dc1
commit
5f5de1c812
3 changed files with 428 additions and 197 deletions
tests/libslic3r
|
@ -1,5 +1,6 @@
|
|||
#include <catch2/catch.hpp>
|
||||
|
||||
#include "libslic3r/Point.hpp"
|
||||
#include "libslic3r/MutablePolygon.hpp"
|
||||
|
||||
using namespace Slic3r;
|
||||
|
@ -143,3 +144,36 @@ SCENARIO("Remove degenerate points from MutablePolygon", "[MutablePolygon]") {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
SCENARIO("smooth_outward", "[MutablePolygon]") {
|
||||
GIVEN("Convex polygon") {
|
||||
MutablePolygon p{ { 0, 0 }, { scaled<coord_t>(10.), 0 }, { 0, scaled<coord_t>(10.) } };
|
||||
WHEN("smooth_outward") {
|
||||
MutablePolygon p2{ p };
|
||||
smooth_outward(p2, scaled<double>(10.));
|
||||
THEN("Polygon is unmodified") {
|
||||
REQUIRE(p == p2);
|
||||
}
|
||||
}
|
||||
}
|
||||
GIVEN("Sharp tiny concave polygon (hole)") {
|
||||
MutablePolygon p{ { 0, 0 }, { 0, scaled<coord_t>(5.) }, { scaled<coord_t>(10.), 0 } };
|
||||
WHEN("smooth_outward") {
|
||||
MutablePolygon p2{ p };
|
||||
smooth_outward(p2, scaled<double>(10.));
|
||||
THEN("Hole is closed") {
|
||||
REQUIRE(p2.empty());
|
||||
}
|
||||
}
|
||||
}
|
||||
GIVEN("Two polygons") {
|
||||
Polygons p{ { { 0, 0 }, { scaled<coord_t>(10.), 0 }, { 0, scaled<coord_t>(10.) } },
|
||||
{ { 0, 0 }, { 0, scaled<coord_t>(5.) }, { scaled<coord_t>(10.), 0 } } };
|
||||
WHEN("smooth_outward") {
|
||||
p = smooth_outward(p, scaled<double>(10.));
|
||||
THEN("CCW contour unmodified, CW contour removed.") {
|
||||
REQUIRE(p == Polygons{ { { 0, 0 }, { scaled<coord_t>(10.), 0 }, { 0, scaled<coord_t>(10.) } } });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue