I think the algorithm used by areaPolygon is incorrect.
For example:
package require math::geometry
set polygon [list -10 -10 10 -10 10 10 -10 10]
::math::geometry::areaPolygon $polygon
returns 200.0, when the correct result for this 20x20
rectangle should be 400.0, as noted in the comments for
the proc.
See Kevin Kenny's proc parea at
http://wiki.tcl.tk/12081 for an alternate implementation.