Skip to content

Releases: ihmcrobotics/euclid

Release notes

12 Jan 10:41
Compare
Choose a tag to compare

Changes:

  • Expanded setMatchingFrame API for frame pose 2D/3D, frame tuple 2D/3D/4D.
  • New tools around positive definite 3D matrices.

Updated dependencies:

  • ihmc-ci 7.7 -> 8.3
  • ihmc-build 0.29.0 -> 0.29.4

Release notes

12 Jan 10:35
Compare
Choose a tag to compare

Changes:

  • New naming restriction framework for controlling reference frame creation.

Updated dependencies:

  • ihmc-ci 7.6 -> 7.7
  • ihmc-build 0.28.6 -> 0.29.0

Release Notes

09 Dec 21:02
Compare
Choose a tag to compare

This is minor release to address a limitation of EuclidCoreTools.epsilonEquals(...). The method now handles Double.POSITIVE_INFINITY and Double.NEGATIVE_INFINITY.

Updated dependencies:

  • ihmc-commons: 0.31.0 -> 0.32.0
  • ihmc-build: 0.28.2 -> 0.28.6

Release notes

08 Sep 18:52
Compare
Choose a tag to compare

The main change in this release is the optimization of some common methods for convex polygons, affecting both ConvexPolygon2D and FrameConvexPolygon2D:

  • set methods are a little smarter and copies the data over when possible to avoid having to update the polygon which is expensive.
  • translate method skips the update by directly translating the bounding-box and centroid.
  • applyTransform and applyInverseTransform re-order the vertices if needed to avoid relying onto the update to do so.
  • Switched to doing lazy updates for the bounding box, area, and centroid of a polygon. They are only updated (if needed) when their respective getter is called.

Other changes include:

  • Introduction of a new enum Location
  • Used the new Location to improve methods in EuclidGeometryTools:
    • added: whichPartOfRay2DIsPoint2DOn, whichSideOfLine2DIsPoint2DOn, whichSideOfPlane3DIsPoint3DOn
    • deprecated some methods which signature was deemed confusing: isPoint2DOnSideOfLine2D, isPoint3DAboveOrBelowPlane3D
  • Updated EuclidFrameTools to keep up with EuclidGeometryTools changes.
  • Moved list operations from EuclidGeometryPolygonTools to EuclidCoreTools and added garbage free implementations of Collections.reverse(...) and Collections.rotate(...) while also allowing to specify a range of the list to be modified.

Updated ihmc-build from 0.28.0 to 0.28.2

Release notes

05 Jul 15:56
Compare
Choose a tag to compare

This release addresses issues of the version 0.18.0.

  • Added FrameTorus3D and its interfaces.
  • SupportingVertexHolder is no longer an EuclidGeometry. It didn't provide any benefit and made implementation of the interface more tedious and didn't make much sense. The shapes remain implementations of EuclidGeoemetry/EuclidFrameGeometry.
  • Made the various final types implement Settable<T> again.
  • Added EuclidFrameTestTools back but only with the assertion methods for EuclidFrameGeometry.
  • Added equals methods in EuclidCoreTools:
    • boolean EuclidCoreTools.equals(EuclidGeometry, EuclidGeometry)
    • boolean EuclidCoreTools.epsilonEquals(EuclidGeometry, EuclidGeometry, double)
    • boolean EuclidCoreTools.geometricallyEquals(EuclidGeometry, EuclidGeometry, double)
  • Added in EuclidFrameTools the equals methods for EuclidFrameGeometry:
    • boolean EuclidFrameTools.equals(EuclidFrameGeometry, EuclidFrameGeometry)
    • boolean EuclidFrameTools.epsilonEquals(EuclidFrameGeometry, EuclidFrameGeometry, double)
    • boolean EuclidFrameTools.geometricallyEquals(EuclidFrameGeometry, EuclidFrameGeometry, double)

Release notes

05 Jul 15:47
Compare
Choose a tag to compare
Release notes Pre-release
Pre-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

Release notes

15 Mar 13:49
Compare
Choose a tag to compare
  • EuclidCoreIOTools handles null elements when getting the string of an array or a collection. Also expanded the API some and created a regression test.
  • Formatted the whole project.

Release notes

01 Feb 14:57
Compare
Choose a tag to compare

Minor release:

  • Extend the API for EuclidHashCodeTools.
  • Added tests for Triangle3D

Updated dependencies:

  • ihmc-ci: 7.4 -> 7.6
  • ihmc-commons-testing: 0.30.4 -> 0.30.5
  • ihmc-build: 0.26.4 -> 0.28.0

Release notes

15 Sep 22:35
Compare
Choose a tag to compare

This release mostly focuses around ReferenceFrame:

  • Added field ReferenceFrame.isFixedInParent to indicate when the transform to the parent frame is expected to be constant.
  • New explicit implementation for a fixed-frame: FixedReferenceFrame
  • Added listener framework to ReferenceFrame to get notified when frames get added/removed to an existing frame tree.
  • Switching to interfaces for the methods' arguments.
  • Made ReferenceFrame.efficientComputeTransform() more robust to concurrent calls. It will still fail when frames are manipulated across multiple threads, but much more rarely.
  • Added filter condition for skipping the update in ReferenceFrame.efficientComputeTransform(). This allows for instance, to restricts the update to a single thread while frames are shared across multiple threads. This still does not make the framework thread safe, but improves its usability and reliability in a multi-thread context.

Misc.:

  • Added constant EuclidCoreTools.neutralQuaternion
  • Updated the README to reflect the migration of the binaries to Maven central.
  • Upgraded ihmc-build from 0.23.7 to 0.26.4.

Release notes

27 Jan 20:31
Compare
Choose a tag to compare

Minor release to address a bug for EuclidGeometryTools.orientation3DFromFirstToSecondVector3D(..., Orientation3DBasics) which would occur when passing a quaternion, the given quaternion would not be normalized.

Dependencies:

  • Upgraded ihmc-build from 0.23.5 to 0.23.7.