The traversedArea function returns the region the moving body covers over the trgeometry's time domain: the placements it takes, or the union of them when the function is asked for it.
Return the area traversed by the temporal rigid geometry
traversedArea(trgeometry,unary_union boolean=false) → geometry
SELECT ST_AsText(traversedArea( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]')); -- MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)),((10 0,11 0,11 1,10 1,10 0))) SELECT ST_AsText(traversedArea( trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0), 0.0)@2001-01-01, Pose(Point(10 0), 0.0)@2001-01-02]', true)); -- POLYGON((0 0,0 1,11 1,11 0,0 0))
The argument is false unless it is given, and the function then answers the placements themselves gathered into one geometry, a multipolygon for a body that is a polygon, which is what a caller that does its own post-processing wants. With unary_union = true they are dissolved into the region they cover.
Sampling note: the merged form of a convex body that translates is exact. Where the body turns, it is read at placements no more than 0.05 radians of turn apart, and nearer where it travels far while it turns, each vertex moving along the chord of its arc between two of them. The region then holds only ground the body covers and leaves out the bulge of the arcs past their chords: over a corpus of turning bodies, at most 5.8e-4 of the diameter of the body.
The merged form of a value in three dimensions is the region on the ground, with no Z. Where the body turns, its area is not yet the one the same value has in two dimensions.