mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| package Slic3r::Point;
 | |
| use strict;
 | |
| use warnings;
 | |
| 
 | |
| sub new {
 | |
|     my $class = shift;
 | |
|     my $self;
 | |
|     if (@_ == 2) {
 | |
|         $self = [@_];
 | |
|     } elsif ((ref $_[0]) =~ 'ARRAY' || (ref $_[0]) =~ /Slic3r::Point/) {
 | |
|         $self = [@{$_[0]}];
 | |
|     } elsif ($_[0]->isa(__PACKAGE__)) {
 | |
|         return $_[0];
 | |
|     } else {
 | |
|         die "Invalid arguments for ${class}->new";
 | |
|     }
 | |
|     bless $self, $class;
 | |
|     return $self;
 | |
| }
 | |
| 
 | |
| sub clone {
 | |
|     my $self = shift;
 | |
|     return (ref $self)->new(@$self);
 | |
| }
 | |
| 
 | |
| sub cast {
 | |
|     my $class = shift;
 | |
|     if (ref $_[0] eq 'Slic3r::Point') {
 | |
|         return $_[0];
 | |
|     } else {
 | |
|         return $class->new(@_);
 | |
|     }
 | |
| }
 | |
| 
 | |
| sub id {
 | |
|     my $self = shift;
 | |
|     return join ',', @$self;
 | |
| }
 | |
| 
 | |
| sub coordinates {
 | |
|     my $self = shift;
 | |
|     return @$self;
 | |
| }
 | |
| 
 | |
| sub coincides_with {
 | |
|     my $self = shift;
 | |
|     my ($point) = @_;
 | |
|     return Slic3r::Geometry::points_coincide($self, $point);
 | |
| }
 | |
| 
 | |
| sub distance_to {
 | |
|     my $self = shift;
 | |
|     my ($point) = @_;
 | |
|     return Slic3r::Geometry::distance_between_points($self, $point);
 | |
| }
 | |
| 
 | |
| sub x { $_[0]->[0] }
 | |
| sub y { $_[0]->[1] }
 | |
| 
 | |
| 1;
 | 
