Skip to content

Releases: ihmcrobotics/euclid

0.22.2

30 Oct 02:07
0f777b3
Compare
Choose a tag to compare

What's Changed

  • Upped commons version to 0.34.0
  • Rolled back the randomAxisAngle method to guarantee it exists on a unit sphere, and fixed the corresponding tests.

Full Changelog: 0.21.0...0.22.2

0.22.0

23 Oct 21:16
Compare
Choose a tag to compare
  • Updated the github workflow and added the build status to the ReadMe
  • pulled in missing tools that had been developed on the ihmc-open-robotics-software repository
  • added a FramePlane3D object from open-robotics, as well as FramePlane3DBasics, FixedFramePlane3DBasics, and FramePlane3DReadOnly interfaces to match the standard Euclid format
  • Pulled in the QuaternionCalculus tools to allow for extracting quaternion rates from angular velocities and accelerations, as well providing an easy SLERP function.
  • Pulled in PoseReferenceFrame, Pose2DReferenceFrame, and TranslationReferenceFrame as basic reference frame implementations.

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