Skip to content

Release notes

Pre-release
Pre-release
Compare
Choose a tag to compare
@SylvainBertrand SylvainBertrand released this 05 Jul 15:47
· 155 commits to master since this release

This release contains major changes, some are non backward compatible changes to the API.

New types: EuclidGeometry and EuclidFrameGeometry:

  • EuclidGeometry: new base interface for almost all Euclid types.
  • Cleaned up the "equals" methods implementations for all object:
    • EuclidGeometry.equals(EuclidGeometry): now considers Double.NaN == Double.NaN in the way as Double.equals(Object) do.
    • EuclidGeometry.epsilonEquals(EuclidGeometry, double): now returns false if the argument is null.
    • EuclidGeometry.geometricallyEquals(EuclidGeometry, double): now returns false if the argument is null.
  • EuclidFrameGeometry: equivalent of EuclidGeometry for representing a frame geometry object:
    • EuclidFrameGeometry.geometricallyEquals(EuclidFrameGeometry, double): now returns false if the argument is is not expressed in the same reference frame.
  • Simplified the test tools:
    • EuclidCoreTestTools has new assertions for the generic type EuclidGeometry, as a result, the assertion methods for sub-types have been removed across the different test tools classes unless they perform additional information given the type like for instance computing the error.
    • EuclidGeometryTools has been deleted. Use EuclidCoreTestTools assertions with the EuclidGeometry.
    • EuclidShapeTestTools: most assertion methods have been removed, use EuclidCoreTestTools assertions with the EuclidGeometry.

Changes for 3D orientations

  • Orientation3DReadOnly now comes with:
    • angle() and angle(boolean) for computing the orientation angle magnitude.
    • distance(Orientation3DReadOnly, boolean) for computing the angular distance between 2 orientations. While this work for any 2 types of orientations, prefer comparing 2 quaternions for better performance.
    • geoemtricallyEquals(EuclidGeometry, double) for comparing 2 orientations.

Changes for tuples:

  • Tuple2DReadOnly and Tuple3DReadOnly:
    • norm() and normSquared() can be used to calculate the norm and the square of the norm of the tuple.
    • differenceNorm(...) and ``differenceNormSquared(...)are convenience methods for calculating the norm of the difference between 2 tuples. This method was also added toTuple4DReadOnly`.
    • dot(...) the dot product has been moved up from the vector interfaces.
  • normalize() clipToMaxNorm(...) have been moved up from the vector interfaces to Tuple2DBasics and Tuple3DBasics.

Changes for pose 3D:

  • Pose3DReadOnly now extends RigidBodyTransformReadOnly.
  • Pose3DBasics now extends RigidBodyTransformBasics.
  • Deprecated methods have been removed from the rigid-body transform and 3D pose interfaces.
  • Pose3D can be used as a transform and is now an equivalent of RigidBodyTransform.

Code removal:

  • Deprecated methods have been removed from:
    • Axis2D and Axis3D
    • Plane3D
    • Line2DBasics and Line3DBasics
    • LineSegment2DBasics and LineSegment3DBasics
    • Pose2DBasics and Pose3DBasics
    • FixedFrameLine2DBasics and FixedFrameLine3DBasics
    • FixedFrameLineSegment2DBasics and FixedFrameLineSegment3DBasics
    • FixedFramePose2DBasics and FixedFramePose3DBasics
    • FrameLine2DBasics and FrameLine3DBasics
    • FrameOrientation3DBasics
    • Capsule3DBasics, Cylinder3DBasics, Ramp3DBasics
  • Removed classes:
    • EuclidFrameTestTools (added back in 0.18.1)
    • EuclidGeometryTestTools

Misc.:

  • The angle method for Vector2DReadOnly and Vector3DReadOnly has been optimized.
  • Deprecated EpsilonComparable, GeometricallyComparable, and GeometryObject. These interface are obsolete and unnecessary, they'll be removed in a future release.
  • Updated ihmc-commons from 0.30.5 to 0.31.0