[wpimath] Add scalar multiply and divide operators to all geometry classes (#4438)

Closes #4435.
This commit is contained in:
Tyler Veness
2022-09-28 21:34:29 -07:00
committed by GitHub
parent 3937ff8221
commit 38bb23eb18
16 changed files with 180 additions and 4 deletions

View File

@@ -112,6 +112,24 @@ class WPILIB_DLLEXPORT Pose2d {
*/
const Rotation2d& Rotation() const { return m_rotation; }
/**
* Multiplies the current pose by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Pose2d.
*/
Pose2d operator*(double scalar) const;
/**
* Divides the current pose by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Pose2d.
*/
Pose2d operator/(double scalar) const;
/**
* Transforms the pose by the given transformation and returns the new pose.
* See + operator for the matrix multiplication performed.

View File

@@ -112,6 +112,24 @@ class WPILIB_DLLEXPORT Pose3d {
*/
const Rotation3d& Rotation() const { return m_rotation; }
/**
* Multiplies the current pose by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Pose2d.
*/
Pose3d operator*(double scalar) const;
/**
* Divides the current pose by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Pose2d.
*/
Pose3d operator/(double scalar) const;
/**
* Transforms the pose by the given transformation and returns the new pose.
* See + operator for the matrix multiplication performed.

View File

@@ -84,12 +84,22 @@ class WPILIB_DLLEXPORT Rotation2d {
/**
* Multiplies the current rotation by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Rotation2d.
*/
Rotation2d operator*(double scalar) const;
/**
* Divides the current rotation by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Rotation2d.
*/
Rotation2d operator/(double scalar) const;
/**
* Checks equality between this Rotation2d and another object.
*

View File

@@ -99,12 +99,22 @@ class WPILIB_DLLEXPORT Rotation3d {
/**
* Multiplies the current rotation by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Rotation3d.
*/
Rotation3d operator*(double scalar) const;
/**
* Divides the current rotation by a scalar.
*
* @param scalar The scalar.
*
* @return The new scaled Rotation3d.
*/
Rotation3d operator/(double scalar) const;
/**
* Checks equality between this Rotation3d and another object.
*

View File

@@ -74,7 +74,7 @@ class WPILIB_DLLEXPORT Transform2d {
Transform2d Inverse() const;
/**
* Scales the transform by the scalar.
* Multiplies the transform by the scalar.
*
* @param scalar The scalar.
* @return The scaled Transform2d.
@@ -83,6 +83,14 @@ class WPILIB_DLLEXPORT Transform2d {
return Transform2d(m_translation * scalar, m_rotation * scalar);
}
/**
* Divides the transform by the scalar.
*
* @param scalar The scalar.
* @return The scaled Transform2d.
*/
Transform2d operator/(double scalar) const { return *this * (1.0 / scalar); }
/**
* Composes two transformations.
*

View File

@@ -81,7 +81,7 @@ class WPILIB_DLLEXPORT Transform3d {
Transform3d Inverse() const;
/**
* Scales the transform by the scalar.
* Multiplies the transform by the scalar.
*
* @param scalar The scalar.
* @return The scaled Transform3d.
@@ -90,6 +90,14 @@ class WPILIB_DLLEXPORT Transform3d {
return Transform3d(m_translation * scalar, m_rotation * scalar);
}
/**
* Divides the transform by the scalar.
*
* @param scalar The scalar.
* @return The scaled Transform3d.
*/
Transform3d operator/(double scalar) const { return *this * (1.0 / scalar); }
/**
* Composes two transformations.
*