A rotation in a 2D coordinate frame represented by a point on the unit circle (cosine and sine).
More...
#include <frc/geometry/Rotation2d.h>
|
constexpr | Rotation2d ()=default |
| Constructs a Rotation2d with a default angle of 0 degrees.
|
|
constexpr | Rotation2d (units::angle_unit auto value) |
| Constructs a Rotation2d with the given angle.
|
|
constexpr | Rotation2d (double x, double y) |
| Constructs a Rotation2d with the given x and y (cosine and sine) components.
|
|
constexpr | Rotation2d (const Eigen::Matrix2d &rotationMatrix) |
| Constructs a Rotation2d from a rotation matrix.
|
|
constexpr Rotation2d | operator+ (const Rotation2d &other) const |
| Adds two rotations together, with the result being bounded between -π and π.
|
|
constexpr Rotation2d | operator- (const Rotation2d &other) const |
| Subtracts the new rotation from the current rotation and returns the new rotation.
|
|
constexpr Rotation2d | operator- () const |
| Takes the inverse of the current rotation.
|
|
constexpr Rotation2d | operator* (double scalar) const |
| Multiplies the current rotation by a scalar.
|
|
constexpr Rotation2d | operator/ (double scalar) const |
| Divides the current rotation by a scalar.
|
|
constexpr bool | operator== (const Rotation2d &other) const |
| Checks equality between this Rotation2d and another object.
|
|
constexpr Rotation2d | RotateBy (const Rotation2d &other) const |
| Adds the new rotation to the current rotation using a rotation matrix.
|
|
constexpr Eigen::Matrix2d | ToMatrix () const |
| Returns matrix representation of this rotation.
|
|
constexpr units::radian_t | Radians () const |
| Returns the radian value of the rotation.
|
|
constexpr units::degree_t | Degrees () const |
| Returns the degree value of the rotation.
|
|
constexpr double | Cos () const |
| Returns the cosine of the rotation.
|
|
constexpr double | Sin () const |
| Returns the sine of the rotation.
|
|
constexpr double | Tan () const |
| Returns the tangent of the rotation.
|
|
A rotation in a 2D coordinate frame represented by a point on the unit circle (cosine and sine).
The angle is continuous, that is if a Rotation2d is constructed with 361 degrees, it will return 361 degrees. This allows algorithms that wouldn't want to see a discontinuity in the rotations as it sweeps past from 360 to 0 on the second time around.
◆ Rotation2d() [1/4]
frc::Rotation2d::Rotation2d |
( |
| ) |
|
|
constexprdefault |
Constructs a Rotation2d with a default angle of 0 degrees.
◆ Rotation2d() [2/4]
frc::Rotation2d::Rotation2d |
( |
units::angle_unit auto | value | ) |
|
|
inlineconstexpr |
Constructs a Rotation2d with the given angle.
- Parameters
-
value | The value of the angle. |
◆ Rotation2d() [3/4]
frc::Rotation2d::Rotation2d |
( |
double | x, |
|
|
double | y ) |
|
inlineconstexpr |
Constructs a Rotation2d with the given x and y (cosine and sine) components.
The x and y don't have to be normalized.
- Parameters
-
x | The x component or cosine of the rotation. |
y | The y component or sine of the rotation. |
◆ Rotation2d() [4/4]
frc::Rotation2d::Rotation2d |
( |
const Eigen::Matrix2d & | rotationMatrix | ) |
|
|
inlineexplicitconstexpr |
Constructs a Rotation2d from a rotation matrix.
- Parameters
-
rotationMatrix | The rotation matrix. |
- Throws:
- std::domain_error if the rotation matrix isn't special orthogonal.
◆ Cos()
double frc::Rotation2d::Cos |
( |
| ) |
const |
|
inlineconstexpr |
Returns the cosine of the rotation.
- Returns
- The cosine of the rotation.
◆ Degrees()
units::degree_t frc::Rotation2d::Degrees |
( |
| ) |
const |
|
inlineconstexpr |
Returns the degree value of the rotation.
- Returns
- The degree value of the rotation.
- See also
- InputModulus to constrain the angle within (-180, 180]
◆ operator*()
Rotation2d frc::Rotation2d::operator* |
( |
double | scalar | ) |
const |
|
inlineconstexpr |
Multiplies the current rotation by a scalar.
- Parameters
-
- Returns
- The new scaled Rotation2d.
◆ operator+()
Adds two rotations together, with the result being bounded between -π and π.
For example, Rotation2d{30_deg} + Rotation2d{60_deg}
equals Rotation2d{units::radian_t{std::numbers::pi/2.0}}
- Parameters
-
other | The rotation to add. |
- Returns
- The sum of the two rotations.
◆ operator-() [1/2]
Takes the inverse of the current rotation.
This is simply the negative of the current angular value.
- Returns
- The inverse of the current rotation.
◆ operator-() [2/2]
Subtracts the new rotation from the current rotation and returns the new rotation.
For example, Rotation2d{10_deg} - Rotation2d{100_deg}
equals Rotation2d{units::radian_t{-std::numbers::pi/2.0}}
- Parameters
-
other | The rotation to subtract. |
- Returns
- The difference between the two rotations.
◆ operator/()
Rotation2d frc::Rotation2d::operator/ |
( |
double | scalar | ) |
const |
|
inlineconstexpr |
Divides the current rotation by a scalar.
- Parameters
-
- Returns
- The new scaled Rotation2d.
◆ operator==()
bool frc::Rotation2d::operator== |
( |
const Rotation2d & | other | ) |
const |
|
inlineconstexpr |
Checks equality between this Rotation2d and another object.
- Parameters
-
- Returns
- Whether the two objects are equal.
◆ Radians()
units::radian_t frc::Rotation2d::Radians |
( |
| ) |
const |
|
inlineconstexpr |
Returns the radian value of the rotation.
- Returns
- The radian value of the rotation.
- See also
- AngleModulus to constrain the angle within (-π, π]
◆ RotateBy()
Adds the new rotation to the current rotation using a rotation matrix.
[cos_new] [other.cos, -other.sin][cos]
[sin_new] = [other.sin, other.cos][sin]
value_new = std::atan2(sin_new, cos_new)
- Parameters
-
other | The rotation to rotate by. |
- Returns
- The new rotated Rotation2d.
◆ Sin()
double frc::Rotation2d::Sin |
( |
| ) |
const |
|
inlineconstexpr |
Returns the sine of the rotation.
- Returns
- The sine of the rotation.
◆ Tan()
double frc::Rotation2d::Tan |
( |
| ) |
const |
|
inlineconstexpr |
Returns the tangent of the rotation.
- Returns
- The tangent of the rotation.
◆ ToMatrix()
Eigen::Matrix2d frc::Rotation2d::ToMatrix |
( |
| ) |
const |
|
inlineconstexpr |
Returns matrix representation of this rotation.
The documentation for this class was generated from the following file: