mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[wpimath] Add vector product and squared length operations to Translation2d/3d (#8133)
Adds methods to compute the dot and cross products between Translation2ds and Translation3ds, as well as methods to compute the square of Distance and Norm, which allows avoiding some calls to sqrt in many cases. Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
@@ -68,12 +68,23 @@ TEST(Translation2dTest, Norm) {
|
||||
EXPECT_DOUBLE_EQ(std::hypot(3.0, 5.0), one.Norm().value());
|
||||
}
|
||||
|
||||
TEST(Translation2dTest, SquaredNorm) {
|
||||
const Translation2d one{3_m, 5_m};
|
||||
EXPECT_DOUBLE_EQ(34.0, one.SquaredNorm().value());
|
||||
}
|
||||
|
||||
TEST(Translation2dTest, Distance) {
|
||||
const Translation2d one{1_m, 1_m};
|
||||
const Translation2d two{6_m, 6_m};
|
||||
EXPECT_DOUBLE_EQ(5.0 * std::sqrt(2.0), one.Distance(two).value());
|
||||
}
|
||||
|
||||
TEST(Translation2dTest, SquaredDistance) {
|
||||
const Translation2d one{1_m, 1_m};
|
||||
const Translation2d two{6_m, 6_m};
|
||||
EXPECT_DOUBLE_EQ(50.0, one.SquaredDistance(two).value());
|
||||
}
|
||||
|
||||
TEST(Translation2dTest, UnaryMinus) {
|
||||
const Translation2d original{-4.5_m, 7_m};
|
||||
const auto inverted = -original;
|
||||
@@ -162,3 +173,15 @@ TEST(Translation2dTest, Constexpr) {
|
||||
static_assert(multiplied.X() == 2_m);
|
||||
static_assert(divided.Y() == 1_m);
|
||||
}
|
||||
|
||||
TEST(Translation2dTest, Dot) {
|
||||
const Translation2d one{2_m, 3_m};
|
||||
const Translation2d two{3_m, 4_m};
|
||||
EXPECT_DOUBLE_EQ(18.0, one.Dot(two).value());
|
||||
}
|
||||
|
||||
TEST(Translation2dTest, Cross) {
|
||||
const Translation2d one{2_m, 3_m};
|
||||
const Translation2d two{3_m, 4_m};
|
||||
EXPECT_DOUBLE_EQ(-1.0, one.Cross(two).value());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user