package Slic3r::ExtrusionPath::Arc; use Moo; extends 'Slic3r::ExtrusionPath'; has 'center' => (is => 'ro', required => 1); has 'radius' => (is => 'ro', required => 1); has 'orientation' => (is => 'ro', required => 1); # cw/ccw use Slic3r::Geometry qw(PI angle3points); sub angle { my $self = shift; return angle3points($self->center, @{$self->points}); } sub length { my $self = shift; if($self->orientation eq 'ccw') { return $self->radius * $self->angle; } else { return $self->radius * (2*PI() - $self->angle); } } 1;