Releases: ihmcrobotics/euclid
Releases · ihmcrobotics/euclid
0.22.4
0.22.3
0.22.2
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
- 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
Changes:
- Expanded
setMatchingFrameAPI for frame pose 2D/3D, frame tuple 2D/3D/4D. - New tools around positive definite 3D matrices.
Updated dependencies:
ihmc-ci7.7 -> 8.3ihmc-build0.29.0 -> 0.29.4
Release notes
Changes:
- New naming restriction framework for controlling reference frame creation.
Updated dependencies:
ihmc-ci7.6 -> 7.7ihmc-build0.28.6 -> 0.29.0
Release Notes
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.0ihmc-build: 0.28.2 -> 0.28.6
Release notes
The main change in this release is the optimization of some common methods for convex polygons, affecting both ConvexPolygon2D and FrameConvexPolygon2D:
setmethods are a little smarter and copies the data over when possible to avoid having to update the polygon which is expensive.translatemethod skips the update by directly translating the bounding-box and centroid.applyTransformandapplyInverseTransformre-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
Locationto improve methods inEuclidGeometryTools:- added:
whichPartOfRay2DIsPoint2DOn,whichSideOfLine2DIsPoint2DOn,whichSideOfPlane3DIsPoint3DOn - deprecated some methods which signature was deemed confusing:
isPoint2DOnSideOfLine2D,isPoint3DAboveOrBelowPlane3D
- added:
- Updated
EuclidFrameToolsto keep up withEuclidGeometryToolschanges. - Moved list operations from
EuclidGeometryPolygonToolstoEuclidCoreToolsand added garbage free implementations ofCollections.reverse(...)andCollections.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
This release addresses issues of the version 0.18.0.
- Added
FrameTorus3Dand its interfaces. SupportingVertexHolderis no longer anEuclidGeometry. It didn't provide any benefit and made implementation of the interface more tedious and didn't make much sense. The shapes remain implementations ofEuclidGeoemetry/EuclidFrameGeometry.- Made the various final types implement
Settable<T>again. - Added
EuclidFrameTestToolsback but only with the assertion methods forEuclidFrameGeometry. - Added equals methods in
EuclidCoreTools:boolean EuclidCoreTools.equals(EuclidGeometry, EuclidGeometry)boolean EuclidCoreTools.epsilonEquals(EuclidGeometry, EuclidGeometry, double)boolean EuclidCoreTools.geometricallyEquals(EuclidGeometry, EuclidGeometry, double)
- Added in
EuclidFrameToolsthe equals methods forEuclidFrameGeometry:boolean EuclidFrameTools.equals(EuclidFrameGeometry, EuclidFrameGeometry)boolean EuclidFrameTools.epsilonEquals(EuclidFrameGeometry, EuclidFrameGeometry, double)boolean EuclidFrameTools.geometricallyEquals(EuclidFrameGeometry, EuclidFrameGeometry, double)
Release notes
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 considersDouble.NaN == Double.NaNin the way asDouble.equals(Object)do.EuclidGeometry.epsilonEquals(EuclidGeometry, double): now returnsfalseif the argument isnull.EuclidGeometry.geometricallyEquals(EuclidGeometry, double): now returnsfalseif the argument isnull.
EuclidFrameGeometry: equivalent ofEuclidGeometryfor representing a frame geometry object:EuclidFrameGeometry.geometricallyEquals(EuclidFrameGeometry, double): now returnsfalseif the argument is is not expressed in the same reference frame.
- Simplified the test tools:
EuclidCoreTestToolshas new assertions for the generic typeEuclidGeometry, 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.EuclidGeometryToolshas been deleted. UseEuclidCoreTestToolsassertions with theEuclidGeometry.EuclidShapeTestTools: most assertion methods have been removed, useEuclidCoreTestToolsassertions with theEuclidGeometry.
Changes for 3D orientations
Orientation3DReadOnlynow comes with:angle()andangle(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:
Tuple2DReadOnlyandTuple3DReadOnly:norm()andnormSquared()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 toTuple2DBasicsandTuple3DBasics.
Changes for pose 3D:
Pose3DReadOnlynow extendsRigidBodyTransformReadOnly.Pose3DBasicsnow extendsRigidBodyTransformBasics.- Deprecated methods have been removed from the rigid-body transform and 3D pose interfaces.
Pose3Dcan be used as a transform and is now an equivalent ofRigidBodyTransform.
Code removal:
- Deprecated methods have been removed from:
Axis2DandAxis3DPlane3DLine2DBasicsandLine3DBasicsLineSegment2DBasicsandLineSegment3DBasicsPose2DBasicsandPose3DBasicsFixedFrameLine2DBasicsandFixedFrameLine3DBasicsFixedFrameLineSegment2DBasicsandFixedFrameLineSegment3DBasicsFixedFramePose2DBasicsandFixedFramePose3DBasicsFrameLine2DBasicsandFrameLine3DBasicsFrameOrientation3DBasicsCapsule3DBasics,Cylinder3DBasics,Ramp3DBasics
- Removed classes:
EuclidFrameTestTools(added back in 0.18.1)EuclidGeometryTestTools
Misc.:
- The angle method for
Vector2DReadOnlyandVector3DReadOnlyhas been optimized. - Deprecated
EpsilonComparable,GeometricallyComparable, andGeometryObject. These interface are obsolete and unnecessary, they'll be removed in a future release. - Updated
ihmc-commonsfrom 0.30.5 to 0.31.0