Optimization in Polyline instantiation
This commit is contained in:
parent
27c421c27f
commit
8061cc6e30
14 changed files with 40 additions and 45 deletions
|
@ -12,26 +12,26 @@ BEGIN {
|
|||
use Slic3r;
|
||||
|
||||
{
|
||||
my $polygon = Slic3r::Polygon->new([
|
||||
my $polygon = Slic3r::Polygon->new(
|
||||
[5,0], [10,0], [15,0], [20,0], [20,10], [20,30], [0,0],
|
||||
]);
|
||||
);
|
||||
|
||||
$polygon->merge_continuous_lines;
|
||||
is scalar(@$polygon), 3, 'merge_continuous_lines';
|
||||
}
|
||||
|
||||
{
|
||||
my $polyline = Slic3r::Polyline->new([
|
||||
my $polyline = Slic3r::Polyline->new(
|
||||
[0,0],[1,0],[2,0],[2,1],[2,2],[1,2],[0,2],[0,1],[0,0],
|
||||
]);
|
||||
);
|
||||
$polyline = $polyline->simplify(1);
|
||||
is_deeply $polyline, [ [0, 0], [2, 0], [2, 2], [0, 2], [0, 0] ], 'Douglas-Peucker';
|
||||
}
|
||||
|
||||
{
|
||||
my $polyline = Slic3r::Polyline->new([
|
||||
my $polyline = Slic3r::Polyline->new(
|
||||
[0,0],[0.5,0.5],[1,0],[1.25,-0.25],[1.5,.5],
|
||||
]);
|
||||
);
|
||||
$polyline->scale(100);
|
||||
$polyline = $polyline->simplify(25);
|
||||
is_deeply $polyline, [ [0, 0], [50, 50], [125, -25], [150, 50] ], 'Douglas-Peucker';
|
||||
|
@ -69,7 +69,7 @@ use Slic3r;
|
|||
[197.307,292.831], [199.808,313.1906], [191.5298,315.0787], [187.3082,299.8172], [186.4201,295.3766],
|
||||
[180.595,296.0487], [161.7854,297.4248], [156.8058,297.6214], [154.3395,317.8592],
|
||||
];
|
||||
my $polygon = Slic3r::Polygon->new($gear);
|
||||
my $polygon = Slic3r::Polygon->new(@$gear);
|
||||
$polygon->merge_continuous_lines;
|
||||
note sprintf "original points: %d\nnew points: %d", scalar(@$gear), scalar(@$polygon);
|
||||
ok @$polygon < @$gear, 'gear was simplified using merge_continuous_lines';
|
||||
|
@ -114,7 +114,7 @@ use Slic3r;
|
|||
[3368.3,7868.6],[3409.2,7889.5],[3553.8,7963.2],[3596,7981.4],
|
||||
];
|
||||
|
||||
my $polygon = Slic3r::Polygon->new($circle);
|
||||
my $polygon = Slic3r::Polygon->new(@$circle);
|
||||
$polygon->merge_continuous_lines;
|
||||
note sprintf "original points: %d\nnew points: %d", scalar(@$circle), scalar(@$polygon);
|
||||
ok @$polygon >= @$circle/3, 'circle was simplified using merge_continuous_lines';
|
||||
|
|
|
@ -103,7 +103,7 @@ is_deeply $intersection, [ [120, 120], [180, 160] ], 'internal lines are preserv
|
|||
], 'tangent line is clipped to square with hole';
|
||||
}
|
||||
{
|
||||
my $polyline = Slic3r::Polyline->new([ [50, 180], [250, 180], [250, 150], [150, 150], [150, 120], [120, 120], [120, 50] ]);
|
||||
my $polyline = Slic3r::Polyline->new([50, 180], [250, 180], [250, 150], [150, 150], [150, 120], [120, 120], [120, 50]);
|
||||
is_deeply [ map $_, $polyline->clip_with_expolygon($expolygon) ], [
|
||||
[ [100, 180], [200, 180] ],
|
||||
[ [200, 150], [160, 150] ],
|
||||
|
|
|
@ -21,7 +21,7 @@ use Slic3r::Geometry qw(scale);
|
|||
foreach my $point (@$points) {
|
||||
@$point = map scale $_, @$point;
|
||||
}
|
||||
my $polyline = Slic3r::Polyline->new($points);
|
||||
my $polyline = Slic3r::Polyline->new(@$points);
|
||||
my $serialized = $polyline->serialize;
|
||||
my $deserialized = Slic3r::Polyline->deserialize($serialized);
|
||||
is scalar(@$deserialized), scalar(@$points), 'number of deserialized points';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue