Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

correct length calculation for clockwise arcs

  • Loading branch information...
commit a81e8c4afc91b828094825eddf512a394f539648 1 parent 28b8515
@sparr authored
Showing with 10 additions and 3 deletions.
  1. +5 −1 lib/Slic3r/ExtrusionPath/Arc.pm
  2. +5 −2 t/arcs.t
View
6 lib/Slic3r/ExtrusionPath/Arc.pm
@@ -17,7 +17,11 @@ sub angle {
sub length {
my $self = shift;
- return $self->radius * $self->angle;
+ if($self->orientation eq 'ccw') {
+ return $self->radius * $self->angle;
+ } else {
+ return $self->radius * (2*PI() - $self->angle);
+ }
}
1;
View
7 t/arcs.t
@@ -2,7 +2,7 @@ use Test::More;
use strict;
use warnings;
-plan tests => 10;
+plan tests => 12;
BEGIN {
use FindBin;
@@ -50,7 +50,10 @@ use Slic3r;
isa_ok $collection1->paths->[0], 'Slic3r::ExtrusionPath::Arc', 'path';
isa_ok $collection2->paths->[0], 'Slic3r::ExtrusionPath::Arc', 'path';
-
+
+ is $collection1->paths->[0]->length, 7.06858347057701, 'cw oriented arc has correct length';
+ is $collection2->paths->[0]->length, 7.06858347057705, 'ccw oriented arc has correct length';
+
is $collection1->paths->[0]->orientation, 'cw', 'cw orientation was correctly detected';
is $collection2->paths->[0]->orientation, 'ccw', 'ccw orientation was correctly detected';
Please sign in to comment.
Something went wrong with that request. Please try again.