[wpimath] Add affine transformation constructors and getters to geometry API (#7509)

Fixes #7429.
This commit is contained in:
Tyler Veness
2024-12-07 21:29:02 -08:00
committed by GitHub
parent c81bd0c909
commit 62a6a77bbf
32 changed files with 611 additions and 27 deletions

View File

@@ -141,6 +141,13 @@ TEST(Pose2dTest, Nearest) {
.value());
}
TEST(Pose2dTest, ToMatrix) {
Pose2d before{1_m, 2_m, 20_deg};
Pose2d after{before.ToMatrix()};
EXPECT_EQ(before, after);
}
TEST(Pose2dTest, Constexpr) {
constexpr Pose2d defaultConstructed;
constexpr Pose2d translationRotation{Translation2d{0_m, 1_m},

View File

@@ -112,6 +112,13 @@ TEST(Pose3dTest, Minus) {
EXPECT_NEAR(0.0, transform.Rotation().Z().value(), 1e-9);
}
TEST(Pose3dTest, ToMatrix) {
Pose3d before{1_m, 2_m, 3_m, Rotation3d{10_deg, 20_deg, 30_deg}};
Pose3d after{before.ToMatrix()};
EXPECT_EQ(before, after);
}
TEST(Pose3dTest, ToPose2d) {
Pose3d pose{1_m, 2_m, 3_m, Rotation3d{20_deg, 30_deg, 40_deg}};
Pose2d expected{1_m, 2_m, 40_deg};

View File

@@ -78,6 +78,13 @@ TEST(Rotation2dTest, Inequality) {
EXPECT_NE(rot1, rot2);
}
TEST(Rotation2dTest, ToMatrix) {
Rotation2d before{20_deg};
Rotation2d after{before.ToMatrix()};
EXPECT_EQ(before, after);
}
TEST(Rotation2dTest, Constexpr) {
constexpr Rotation2d defaultCtor;
constexpr Rotation2d radianCtor{5_rad};

View File

@@ -307,6 +307,13 @@ TEST(Rotation3dTest, Inequality) {
EXPECT_NE(rot1, rot2);
}
TEST(Rotation3dTest, ToMatrix) {
Rotation3d before{10_deg, 20_deg, 30_deg};
Rotation3d after{before.ToMatrix()};
EXPECT_EQ(before, after);
}
TEST(Rotation3dTest, Interpolate) {
const Eigen::Vector3d xAxis{1.0, 0.0, 0.0};
const Eigen::Vector3d yAxis{0.0, 1.0, 0.0};

View File

@@ -13,6 +13,13 @@
using namespace frc;
TEST(Transform2dTest, ToMatrix) {
Transform2d before{1_m, 2_m, 20_deg};
Transform2d after{before.ToMatrix()};
EXPECT_EQ(before, after);
}
TEST(Transform2dTest, Inverse) {
const Pose2d initial{1_m, 2_m, 45_deg};
const Transform2d transform{{5_m, 0_m}, 5_deg};

View File

@@ -13,6 +13,13 @@
using namespace frc;
TEST(Transform3dTest, ToMatrix) {
Transform3d before{1_m, 2_m, 3_m, Rotation3d{10_deg, 20_deg, 30_deg}};
Transform3d after{before.ToMatrix()};
EXPECT_EQ(before, after);
}
TEST(Transform3dTest, Inverse) {
Eigen::Vector3d zAxis{0.0, 0.0, 1.0};