in reply to Clockwise or Counter-clockwise

There is a simple polygon area computation that comes out negative if the polygon is clockwise and positive if it is counterclockwise. Here is some perl code that computed it for a polygon object I wrote (not included).
sub GreenTheoremTest { my ($poly) = @_; my $n = $poly->getSize; my $i; my $asum = 0.0; for ($i = 0; $i < $n; $i++) { my $i1 = ($i + 1) % $n; my $x = $poly->getPoint($i)->x; my $y = $poly->getPoint($i)->y; my $x1 = $poly->getPoint($i1)->x; my $y1 = $poly->getPoint($i1)->y; $asum += $x*$y1 - $x1*$y; } return $asum; }
Update2: My assertion that it will work for self-crossing polygons is refuted by counterexample here.

Update:It will work even for concave and self-crossing polygons. But because the test does not work for colinear points and other zero-area polygons, I use it like this:

my $EPSILON = 1e-20; my $asum = GreenTheoremTest($poly); if (abs($asum) < $EPSILON) { print "Polygon area is too small to be sure of direction!\n"; } elsif ($asum < 0.0) { print "Polygon is clockwise\n"; } else { print "Polygon is counterclockwise\n"; }