92 lines
2.0 KiB
Perl
92 lines
2.0 KiB
Perl
|
use Test::More;
|
||
|
use strict;
|
||
|
use warnings;
|
||
|
|
||
|
plan tests => 11;
|
||
|
|
||
|
BEGIN {
|
||
|
use FindBin;
|
||
|
use lib "$FindBin::Bin/../lib";
|
||
|
}
|
||
|
|
||
|
use Slic3r;
|
||
|
use Slic3r::Geometry qw(collinear);
|
||
|
|
||
|
#==========================================================
|
||
|
|
||
|
{
|
||
|
my @lines = (
|
||
|
[ [0,4], [4,2] ],
|
||
|
[ [2,3], [8,0] ],
|
||
|
[ [6,1], [8,0] ],
|
||
|
);
|
||
|
is collinear($lines[0], $lines[1]), 1, 'collinear';
|
||
|
is collinear($lines[1], $lines[2]), 1, 'collinear';
|
||
|
is collinear($lines[0], $lines[2]), 1, 'collinear';
|
||
|
}
|
||
|
|
||
|
#==========================================================
|
||
|
|
||
|
{
|
||
|
# horizontal
|
||
|
my @lines = (
|
||
|
[ [0,1], [5,1] ],
|
||
|
[ [2,1], [8,1] ],
|
||
|
);
|
||
|
is collinear($lines[0], $lines[1]), 1, 'collinear';
|
||
|
}
|
||
|
|
||
|
#==========================================================
|
||
|
|
||
|
{
|
||
|
# vertical
|
||
|
my @lines = (
|
||
|
[ [1,0], [1,5] ],
|
||
|
[ [1,2], [1,8] ],
|
||
|
);
|
||
|
is collinear($lines[0], $lines[1]), 1, 'collinear';
|
||
|
}
|
||
|
|
||
|
#==========================================================
|
||
|
|
||
|
{
|
||
|
# non overlapping
|
||
|
my @lines = (
|
||
|
[ [0,1], [5,1] ],
|
||
|
[ [7,1], [10,1] ],
|
||
|
);
|
||
|
is collinear($lines[0], $lines[1], 1), 0, 'non overlapping';
|
||
|
is collinear($lines[0], $lines[1], 0), 1, 'overlapping';
|
||
|
}
|
||
|
|
||
|
#==========================================================
|
||
|
|
||
|
{
|
||
|
# with one common point
|
||
|
my @lines = (
|
||
|
[ [0,4], [4,2] ],
|
||
|
[ [4,2], [8,0] ],
|
||
|
);
|
||
|
is collinear($lines[0], $lines[1], 1), 1, 'one common point';
|
||
|
is collinear($lines[0], $lines[1], 0), 1, 'one common point';
|
||
|
}
|
||
|
|
||
|
#==========================================================
|
||
|
|
||
|
{
|
||
|
# not collinear
|
||
|
my @lines = (
|
||
|
[ [290000000,690525600], [285163380,684761540] ],
|
||
|
[ [285163380,684761540], [193267599,575244400] ],
|
||
|
);
|
||
|
is collinear($lines[0], $lines[1], 0), 0, 'not collinear';
|
||
|
is collinear($lines[0], $lines[1], 1), 0, 'not collinear';
|
||
|
|
||
|
use Slic3r::SVG;
|
||
|
Slic3r::SVG::output(undef, "collinear.svg",
|
||
|
lines => \@lines,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
#==========================================================
|