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, ); } #==========================================================