15 #include <gtest/gtest.h>
26 TEST(Embed3DTests, Se3ToSe2) {
28 const auto identity_2d =
SE2d{};
29 const auto identity_3d =
SE3d{};
30 ASSERT_TRUE(identity_2d.matrix().isApprox(
To2d(identity_3d).matrix()));
33 const auto rotation_about_z_2d =
SE2d::rot(0.5);
34 const auto rotation_about_z_3d =
SE3d::rotZ(0.5);
35 ASSERT_TRUE(rotation_about_z_2d.matrix().isApprox(
To2d(rotation_about_z_3d).matrix()));
38 const auto identity_2d =
SE2d{};
39 const auto rotation_about_x_3d =
SE3d::rotX(0.5);
40 ASSERT_TRUE(identity_2d.matrix().isApprox(
To2d(rotation_about_x_3d).matrix()));
43 const auto identity_2d =
SE2d{};
44 const auto rotation_about_y_3d =
SE3d::rotY(0.5);
45 ASSERT_TRUE(identity_2d.matrix().isApprox(
To2d(rotation_about_y_3d).matrix()));
49 ASSERT_TRUE(
To2d(translation_3d).translation().isApprox(Eigen::Vector2d{1, 2}));
53 TEST(Embed3DTests, Se2ToSe3) {
55 const auto identity_3d =
SE3d{};
56 const auto identity_2d =
SE2d{};
57 ASSERT_TRUE(
To3d(identity_2d).matrix().isApprox(identity_3d.matrix()));
60 const auto rotation_about_z_3d =
SE3d::rotZ(0.5);
61 const auto rotation_about_z_2d =
SE2d::rot(0.5);
62 ASSERT_TRUE(
To3d(rotation_about_z_2d).matrix().isApprox(rotation_about_z_3d.matrix()));
65 const auto translation_2d =
SE2d{0, Eigen::Vector2d{1, 2}};
66 ASSERT_TRUE(
To3d(translation_2d).translation().isApprox(Eigen::Vector3d{1, 2, 0}));