imported from "final" folder

This commit is contained in:
2025-11-28 12:12:50 +01:00
parent f9288986cf
commit ff8e725b35
1061 changed files with 225150 additions and 96 deletions

View File

@@ -0,0 +1,46 @@
// g++ --std=c++11 test.cpp
#include "test.h"
#include "fl/geometry.h"
using namespace fl;
#define REQUIRE_APPROX(a, b, tolerance) \
do { \
if (fabs((a - b)) > (tolerance)) { \
std::cerr << "REQUIRE_APPROX failed: " << #a << " = " << (a) \
<< ", " << #b << " = " << (b) \
<< ", tolerance = " << (tolerance) << std::endl; \
exit(1); \
} \
} while (0)
TEST_CASE("0 is 0 distance from diagonal line through the center") {
line_xy<float> line(-100, -100, 100, 100);
vec2<float> p(0, 0);
vec2<float> projected;
float dist = line.distance_to(p, &projected);
REQUIRE_APPROX(projected.x, 0.0f, 0.001f);
REQUIRE_APPROX(projected.y, 0.0f, 0.001f);
REQUIRE_APPROX(dist, 0.0f, 0.001f);
}
TEST_CASE("point closest to line") {
line_xy<float> line(-100, -100, 100, 100);
vec2<float> p(50, 0);
vec2<float> projected;
float dist = line.distance_to(p, &projected);
// The closest point should be (25, 25)
REQUIRE_APPROX(projected.x, 25.0f, 0.001f);
REQUIRE_APPROX(projected.y, 25.0f, 0.001f);
// Distance should be sqrt((50-25)^2 + (0-25)^2) = sqrt(1250) ≈ 35.355
REQUIRE_APPROX(dist, 35.355f, 0.001f);
}