|
5 + F-----------E
| | |
4 + | |
| | |
3 + | C--------D
| | |
2 + | |
| | |
1 + A--B
|
+--+--+--+--+--+--
1 2 3 4 5
####
DE = [ 5, 3, 5, 5 ]
AB = [ 1, 1, 2, 1 ]
BC = [ 2, 1, 2, 3 ]
EF = [ 5, 5, 1, 5 ]
FA = [ 1, 5, 1, 1 ]
CD = [ 2, 3, 5, 3 ]
##
##
AB = [ 1, 1, 2, 1 ]
BC = [ 2, 1, 2, 3 ]
CD = [ 2, 3, 5, 3 ]
DE = [ 5, 3, 5, 5 ]
EF = [ 5, 5, 1, 5 ]
FA = [ 1, 5, 1, 1 ]
##
##
A = [ 1, 1 ]
B = [ 2, 1 ]
C = [ 2, 3 ]
D = [ 5, 3 ]
E = [ 5, 5 ]
F = [ 1, 5 ]
##
##
# segments are in @seg
my($start_x, $start_y) = ($seg[0]->[0], $seg[0]->[1]);
my($end_x, $end_y) = ($seg[0]->[2], $seg[0]->[3]);
push(@poly, [$start_x, $start_y]);
push(@poly, [$end_x, $end_y]);
shift(@seg);
while(@seg) {
for(my $s = 0; $s <= $#seg; $s++) {
if( $seg[$s]->[0] == $end_x
and $seg[$s]->[1] == $end_y ) {
($end_x, $end_y) = ($seg[$s]->[2], $seg[$s]->[3]);
push(@poly, [$end_x, $end_y]);
splice(@seg, $s, 1);
}
}
}
# polygon points are in @poly