These functions derive a spatial value from the moving body. centroid and bodyPointTrajectory return temporal points tracking a position over time; convexHull returns a static geometry.
Return the centroid of the moving body as a temporal point
centroid(trgeometry) → tgeompoint
SELECT asText(centroid( trgeometry 'Polygon((0 0, 1 0, 1 1, 0 1, 0 0)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(2 0),0)@2001-01-02]')); -- [POINT(0.5 0.5)@2001-01-01, POINT(2.5 0.5)@2001-01-02]
Return the convex hull of the area traversed by the moving body
convexHull(trgeometry) → geometry
SELECT ST_GeometryType(convexHull( trgeometry 'Polygon((0 0, 1 0, 1 1, 0 1, 0 0)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(2 0),0)@2001-01-02]')); -- ST_Polygon
Return the world-frame trajectory of a body-frame point carried by the moving rigid geometry
bodyPointTrajectory(trgeometry,geometry) → tgeompoint
The point is expressed in the reference shape's local frame and the time-varying pose is applied to it at each instant. The result has the interpolation of the temporal rigid geometry. With linear interpolation, the result is exact along a segment in which the body does not rotate. Along a segment in which the body rotates, the point follows a curve, which the result replaces by the segment joining its positions at the two instants, as in the second example below, where the point moves from (1 0) to (0 1) along a quarter of a circle.
SELECT asText(bodyPointTrajectory( trgeometry 'Polygon((0 0, 1 0, 1 1, 0 1, 0 0)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(2 0),0)@2001-01-02]', geometry 'Point(0 0)')); -- [POINT(0 0)@2001-01-01, POINT(2 0)@2001-01-02] SELECT asText(round(bodyPointTrajectory( trgeometry 'Polygon((0 0, 1 0, 1 1, 0 1, 0 0)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(0 0),1.5707963267948966)@2001-01-02]', geometry 'Point(1 0)'), 6)); -- [POINT(1 0)@2001-01-01, POINT(0 1)@2001-01-02]