Ever and always relationships
eContains({geometry,trgeometry},{geometry,trgeometry}) → boolean
aContains({geometry,trgeometry},{geometry,trgeometry}) → boolean
eCovers({geometry,trgeometry},{geometry,trgeometry}) → boolean
aCovers({geometry,trgeometry},{geometry,trgeometry}) → boolean
eDisjoint({geometry,trgeometry},{geometry,trgeometry}) → boolean
aDisjoint({geometry,trgeometry},{geometry,trgeometry}) → boolean
eDwithin({geometry,trgeometry},{geometry,trgeometry},float) → boolean
aDwithin({geometry,trgeometry},{geometry,trgeometry},float) → boolean
eIntersects({geometry,trgeometry},{geometry,trgeometry}) → boolean
aIntersects({geometry,trgeometry},{geometry,trgeometry}) → boolean
eTouches({geometry,trgeometry},{geometry,trgeometry}) → boolean
aTouches({geometry,trgeometry},{geometry,trgeometry}) → boolean
The ever relationships determine whether the relationship holds at some instant, and the always ones whether it holds at every instant. A temporal rigid geometry answers them at the body its reference geometry places at each instant, so the relationship read is the one of the placed body rather than of the reference geometry at the origin.
SELECT eIntersects(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(3 3),0)@2001-01-03]', geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))'); -- true SELECT aIntersects(trgeometry 'Polygon((0 0,1 0,1 1,0 1,0 0)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(3 3),0)@2001-01-03]', geometry 'Polygon((0 0,0 2,2 2,2 0,0 0))'); -- false
eDwithin and aDwithin use the temporal distance of the section called “Distance Operations”, with the same requirements on the geometries. In the example, a square turns next to a point. It is at distance 2 from the point at the two instants, but it comes within 1.7 of the point between them.
SELECT eDwithin(trgeometry 'Polygon((-1 -1,1 -1,1 1,-1 1,-1 -1)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(0 0),1.5707963267948966)@2001-01-02]', geometry 'Point(3 0)', 1.7); -- true SELECT aDwithin(trgeometry 'Polygon((-1 -1,1 -1,1 1,-1 1,-1 -1)); [Pose(Point(0 0),0)@2001-01-01, Pose(Point(0 0),1.5707963267948966)@2001-01-02]', geometry 'Point(3 0)', 1.7); -- false