9 #include <gtest/gtest.h> 15 using namespace signed_distance_field;
17 TEST(testPixelBorderDistance, distanceFunction) {
26 TEST(testPixelBorderDistance, equidistantPoint) {
28 float offsetRange = 20.0;
29 float offsetStep = 0.25;
32 for (
int p = -pixelRange; p < pixelRange; ++p) {
33 for (
float fp = -offsetRange; fp < offsetRange; fp += offsetStep) {
34 for (
int q = -pixelRange; q < pixelRange; ++q) {
35 for (
float fq = -offsetRange; fq < offsetRange; fq += offsetStep) {
43 ASSERT_LT(std::abs(s0 - s1), tol);
48 ASSERT_LT(std::abs(dp - dq), tol) <<
"p: " << p <<
", q: " << q <<
", fp: " << fp <<
", fq: " << fq;
55 TEST(testPixelBorderDistance, equidistantPointInfCases) {
56 const float pixelTestDistance{1e6};
59 EXPECT_FLOAT_EQ(
equidistancePoint(-pixelTestDistance,
INF, pixelTestDistance, std::numeric_limits<float>::max()), -
INF);
61 EXPECT_FLOAT_EQ(
equidistancePoint(-pixelTestDistance,
INF, pixelTestDistance, std::numeric_limits<float>::lowest()), -
INF);
64 EXPECT_FLOAT_EQ(
equidistancePoint(-pixelTestDistance, std::numeric_limits<float>::max(), pixelTestDistance,
INF),
INF);
66 EXPECT_FLOAT_EQ(
equidistancePoint(-pixelTestDistance, std::numeric_limits<float>::lowest(), pixelTestDistance,
INF),
INF);
71 equidistancePoint(-pixelTestDistance, std::numeric_limits<float>::max(), pixelTestDistance, std::numeric_limits<float>::max()), 0.0F);
73 equidistancePoint(-pixelTestDistance, std::numeric_limits<float>::lowest(), pixelTestDistance, std::numeric_limits<float>::lowest()),
float squarePixelBorderDistance(float i, float j, float f)
float pixelBorderDistance(float i, float j)
float equidistancePoint(float q, float fq, float p, float fp)
constexpr float INF
Distance value that is considered infinite.
TEST(GridMap, CopyConstructor)