PrusaSlicer-NonPlainar/lib/Slic3r/Point.pm
Alessandro Ranellucci 9e111d0a6d Rectilinear fill
2011-09-05 12:21:27 +02:00

56 lines
1.2 KiB
Perl

package Slic3r::Point;
use Moose;
use Moose::Util::TypeConstraints;
subtype 'Slic3r::Point::Coordinate', as 'Int';
coerce 'Slic3r::Point::Coordinate', from 'Num', via { sprintf '%.0f', $_ };
has 'x' => (
is => 'ro',
isa => 'Slic3r::Point::Coordinate',
required => 1,
coerce => 1,
);
has 'y' => (
is => 'ro',
isa => 'Slic3r::Point::Coordinate',
required => 1,
coerce => 1,
);
# this array contains weak references, so it can contain undef's as well
has 'lines' => (
is => 'rw',
isa => 'ArrayRef[Slic3r::Line]',
default => sub { [] },
);
sub id {
my $self = shift;
return $self->x . "," . $self->y; #;;
}
sub coordinates {
my $self = shift;
return ($self->x, $self->y); #))
}
sub coincides_with {
my $self = shift;
my ($point) = @_;
$point = Slic3r::Point->new(x => $point->[0], y => $point->[1]) #==
if ref $point eq 'ARRAY';
return $self->x == $point->x && $self->y == $point->y; #=
}
sub distance_to {
my $self = shift;
my ($point) = @_;
return sqrt(($point->x - $self->x)**2 + ($point->y - $self->y)**2); #-
}
1;