Releases: ihmcrobotics/euclid
Releases · ihmcrobotics/euclid
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
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.3ihmc-build
0.29.0 -> 0.29.4
Release notes
Changes:
- New naming restriction framework for controlling reference frame creation.
Updated dependencies:
ihmc-ci
7.6 -> 7.7ihmc-build
0.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
:
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
andapplyInverseTransform
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 inEuclidGeometryTools
:- added:
whichPartOfRay2DIsPoint2DOn
,whichSideOfLine2DIsPoint2DOn
,whichSideOfPlane3DIsPoint3DOn
- deprecated some methods which signature was deemed confusing:
isPoint2DOnSideOfLine2D
,isPoint3DAboveOrBelowPlane3D
- added:
- Updated
EuclidFrameTools
to keep up withEuclidGeometryTools
changes. - Moved list operations from
EuclidGeometryPolygonTools
toEuclidCoreTools
and 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
FrameTorus3D
and its interfaces. SupportingVertexHolder
is 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
EuclidFrameTestTools
back 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
EuclidFrameTools
the 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.NaN
in the way asDouble.equals(Object)
do.EuclidGeometry.epsilonEquals(EuclidGeometry, double)
: now returnsfalse
if the argument isnull
.EuclidGeometry.geometricallyEquals(EuclidGeometry, double)
: now returnsfalse
if the argument isnull
.
EuclidFrameGeometry
: equivalent ofEuclidGeometry
for representing a frame geometry object:EuclidFrameGeometry.geometricallyEquals(EuclidFrameGeometry, double)
: now returnsfalse
if the argument is is not expressed in the same reference frame.
- Simplified the test tools:
EuclidCoreTestTools
has 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.EuclidGeometryTools
has been deleted. UseEuclidCoreTestTools
assertions with theEuclidGeometry
.EuclidShapeTestTools
: most assertion methods have been removed, useEuclidCoreTestTools
assertions with theEuclidGeometry
.
Changes for 3D orientations
Orientation3DReadOnly
now 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:
Tuple2DReadOnly
andTuple3DReadOnly
: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 to
Tuple4DReadOnly`.dot(...)
the dot product has been moved up from the vector interfaces.
normalize()
clipToMaxNorm(...)
have been moved up from the vector interfaces toTuple2DBasics
andTuple3DBasics
.
Changes for pose 3D:
Pose3DReadOnly
now extendsRigidBodyTransformReadOnly
.Pose3DBasics
now extendsRigidBodyTransformBasics
.- 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 ofRigidBodyTransform
.
Code removal:
- Deprecated methods have been removed from:
Axis2D
andAxis3D
Plane3D
Line2DBasics
andLine3DBasics
LineSegment2DBasics
andLineSegment3DBasics
Pose2DBasics
andPose3DBasics
FixedFrameLine2DBasics
andFixedFrameLine3DBasics
FixedFrameLineSegment2DBasics
andFixedFrameLineSegment3DBasics
FixedFramePose2DBasics
andFixedFramePose3DBasics
FrameLine2DBasics
andFrameLine3DBasics
FrameOrientation3DBasics
Capsule3DBasics
,Cylinder3DBasics
,Ramp3DBasics
- Removed classes:
EuclidFrameTestTools
(added back in 0.18.1)EuclidGeometryTestTools
Misc.:
- The angle method for
Vector2DReadOnly
andVector3DReadOnly
has been optimized. - Deprecated
EpsilonComparable
,GeometricallyComparable
, andGeometryObject
. 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
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
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