I've found a neat way to calculate area and volume. First note that a triangle's area is half that of a parallelogram determined by two of its edges, and the parallelogram's (directed) area is the wedge product of those two edges. So a triangle has
A = (1/2) (v2 - v1) ^ (v3 - v1)
= (1/2) (v2^v3 + v3^v1 + v1^v2)
where vi are the vertices. A general n-gon can be broken into triangles sharing a vertex v1, so the total area is
A = (1/2) (v1^v2 + v2^v3 + v3^v1)
+ (1/2) (v1^v3 + v3^v4 + v4^v1)
+ (1/2) (v1^v4 + v4^v5 + v5^v1)
+ ...
+ (1/2) (v1^vn-1 + vn-1^vn + vn^v1)
= (1/2) (v1^v2 + v2^v3 + v3^v4 + ... + vn-1^vn + vn^v1),
a cyclic sum of wedge products of connected pairs of vertices. We could also write this as
A = (1/2) (v1^(v2 - v1) + v2^(v3 - v2) + ... + vn^(v1 - vn))
= (1/2) (x1^Δx1 + x2^Δx2 + ... + xn^Δxn)
which resembles an integral of the position vector x. Indeed, this is related to the fundamental theorem of geometric calculus. (That's int (∇F)~ dmx = int F~ dm-1x, where the integral on the left is over an m-dimensional region with tangent blade dmx, the integral on the right is over its boundary, and F~ is the reverse of a multivector function F.) In 2 dimensions, ∇x = 2, so we can convert the integral of 1 = (1/2)∇x, over the region's area, into an integral over the boundary curve:
A = int 1 d2x = (1/2) int x dx = (1/2) int x ^ dx.
The last equality is because the integral must be a bivector (no scalar part). More generally, we can use ∇x = m to find a region's (hyper)volume:
V = int 1 dmx = (1/m) int x dm-1x = (1/m) int x ^ dm-1x.
Along one facet F of an m-polytope, the tangent blade dm-1x is constant, and x ^ dm-1x is constant because x is varying parallel to dm-1x, so we can take this to be v1 ^ dm-1x, with v1 a vertex of F. So this part of the integral is
(1/m) intF x ^ dm-1x = (1/m) v1 ^ intF dm-1x
(and V is the sum of these integrals over all facets). But this term on the right is the directed volume of F, so we can calculate higher-dimensional volume recursively from lower dimensions.
Of course, if you want a scalar volume, then you need to take the magnitude of the multivector: ||V|| = sqrt{ V~ V } = sqrt{ | V V | }. But we need the direction of V in order to use the recursive formula.