New polygon_is_convex() function

This commit is contained in:
Alessandro Ranellucci 2012-02-25 16:14:59 +01:00
parent 2d130061ed
commit a24ffee2aa
3 changed files with 24 additions and 4 deletions

View file

@ -19,7 +19,7 @@ our @EXPORT_OK = qw(
polygon_remove_acute_vertices polygon_remove_parallel_continuous_edges
shortest_path collinear scale unscale merge_collinear_lines
rad2deg_dir bounding_box_center line_intersects_any douglas_peucker
polyline_remove_short_segments normal triangle_normal
polyline_remove_short_segments normal triangle_normal polygon_is_convex
);
use XXX;
@ -295,6 +295,15 @@ sub polygon_has_vertex {
return 0;
}
sub polygon_is_convex {
my ($points) = @_;
for (my $i = 0; $i <= $#$points; $i++) {
my $angle = angle3points($points->[$i-1], $points->[$i-2], $points->[$i]);
return 0 if $angle < PI;
}
return 1;
}
sub polyline_length {
my ($polyline) = @_;
my $length = 0;