geom/aabb: add ray-aabb distance tests
This commit is contained in:
parent
1c150296f9
commit
dcf87a7c17
@ -1,15 +1,45 @@
|
|||||||
#include "geom/aabb.hpp"
|
#include "geom/aabb.hpp"
|
||||||
|
#include "geom/ray.hpp"
|
||||||
|
|
||||||
#include "tap.hpp"
|
#include "tap.hpp"
|
||||||
|
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
using util::geom::aabb2f;
|
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int, char**)
|
main (int, char**)
|
||||||
{
|
{
|
||||||
util::TAP::logger tap;
|
util::TAP::logger tap;
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
util::point2f lo;
|
||||||
|
util::point2f hi;
|
||||||
|
|
||||||
|
util::point2f base;
|
||||||
|
util::vector2f direction;
|
||||||
|
|
||||||
|
float distance;
|
||||||
|
|
||||||
|
const char *message;
|
||||||
|
} const TESTS[] {
|
||||||
|
{
|
||||||
|
{ 1, 1 }, { 9, 9 },
|
||||||
|
{ 2, 2 }, { 1/std::sqrt (2.f), 1/std::sqrt (2.f) },
|
||||||
|
std::sqrt (7.f * 7 * 2),
|
||||||
|
"ray doesn't give negative distance to closest edge"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (auto const &t: TESTS) {
|
||||||
|
util::geom::aabb2f const shape (t.lo, t.hi);
|
||||||
|
util::geom::ray2f const r {t.base, t.direction};
|
||||||
|
tap.expect_eq (distance (r, shape), t.distance, "%!", t.message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
return tap.status ();
|
return tap.status ();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user