61 lines
3.3 KiB
C++
61 lines
3.3 KiB
C++
#include "2d.h"
|
|
#include "test/u.hpp"
|
|
#include <functional>
|
|
#include <initializer_list>
|
|
|
|
namespace {
|
|
|
|
AddTestCase _(1, "2d.hpp", [](TestCase& t) {
|
|
using namespace arras;
|
|
t.expectEq<Float>([] { return cross({1, 2}, {4, 1}); }, -7);
|
|
t.expectEq<Float>([] { return cross({.5, 2.5}, {4, 1.5}); }, -9.25);
|
|
|
|
t.expectEq<Float>([] { return dot({1, 2}, {4, 1}); }, 6);
|
|
|
|
t.expectTrue([] { return Circle({0, 0}, 2).contain({1, 1}); });
|
|
t.expectTrue([] { return Circle({0, 0}, 1).contain({0, 1}); });
|
|
t.expectFalse([] { return Circle({1, 0}, 1.4).contain({0, -1}); });
|
|
t.expectTrue([] { return Circle({1, 1}, 1.42).contain({0, 0}); });
|
|
t.expectTrue([] { return Circle({1.83649, -.12711}, .05484).contain({1.82541, -.1019}); });
|
|
|
|
t.expectEq<Vec2>([] { return Polygon<3>{{0, 0}, {1, 0}, {1, 1}}.vertex[0]; }, {0, 0});
|
|
|
|
t.expectTrue([] { return Polygon<3>{{0, 0}, {1, 0}, {1, 1}}.contain({.1, .05}); });
|
|
t.expectFalse([] { return Polygon<3>{{0, 0}, {1, 0}, {1, 1}}.contain({.1, .2}); });
|
|
|
|
Polygon<9> pA{{-2, -2}, {-1, -2}, {2, 0}, {1, -2}, {2, -1}, {2, -3}, {3, 1}, {1, 1}, {0, 0}};
|
|
t.expectTrue([pA] { return pA.contain({1, 0}); });
|
|
t.expectTrue([pA] { return pA.contain({0, 0}); });
|
|
t.expectTrue([pA] { return pA.contain({0, -1}); });
|
|
t.expectTrue([pA] { return pA.contain({1.52, -1.26}); });
|
|
t.expectTrue([pA] { return pA.contain({2.16, -1.9}); });
|
|
t.expectFalse([pA] { return pA.contain({1.28, -.8}); });
|
|
t.expectFalse([pA] { return pA.contain({1.68, -1.94}); });
|
|
t.expectFalse([pA] { return pA.contain({1.83649, -.12711}); });
|
|
t.expectTrue([pA] { return pA.contain({1.82541, -.1019}); });
|
|
|
|
t.expectTrue([] { return intersect(Circle({1, 1}, 2), Circle({1, 1}, 1)); });
|
|
t.expectTrue([] { return intersect(Circle({1, 1}, 1.5), Circle({3, 1}, 1.5)); });
|
|
t.expectFalse([] { return intersect(Circle({1, 1}, 1.5), Circle({3, 4}, 1.5)); });
|
|
t.expectFalse([] { return intersect(Circle({0, 0}, 1.5), Circle({-3, -4}, 1.5)); });
|
|
|
|
t.expectTrue([] { return intersect(Circle({1, 1}, 2), Polygon<3>{{0, 0}, {2, 2}, {0, 2}}); });
|
|
t.expectTrue([] { return intersect(Polygon<3>{{0, 0}, {2, 2}, {0, 2}}, Circle({1, 1}, 2)); });
|
|
|
|
t.expectTrue([] { return intersect(Circle({0, 0}, 5), Polygon<4>{{-1, -1}, {-1, 1}, {1, 1}, {1, -1}}); });
|
|
t.expectTrue([] { return intersect(Circle({0, 0}, 1), Polygon<4>{{-1, -1}, {-1, 1}, {1, 1}, {1, -1}}); });
|
|
t.expectTrue([] { return intersect(Circle({0, 0}, 1), Polygon<4>{{-1, -1}, {-1, 1}, {1, 1}, {1, -1}}); });
|
|
t.expectTrue([] { return intersect(Circle({0, 0}, 1), Polygon<3>{{-1, -1}, {-1, 1}, {1, 1}}); });
|
|
t.expectFalse([] { return intersect(Circle({0, 0}, 2), Polygon<3>{{0, -3}, {14, -3}, {0, -5}}); });
|
|
t.expectFalse([pA] { return intersect(Circle({-1, 1}, 1.4), pA); });
|
|
t.expectTrue([pA] { return intersect(Circle({-3, -2}, 1.2), pA); });
|
|
t.expectTrue([pA] { return intersect(Circle({1.83649, -.12711}, .05484), pA); });
|
|
t.expectFalse([pA] { return intersect(Circle({1.5595, -.42437}, .08794), pA); });
|
|
|
|
t.expectTrue([] { return intersect(Polygon<4>{{3, 1}, {0, 1}, {0, 0}, {3, 0}}
|
|
, Polygon<4>{{.1, .1}, {.2, .1}, {.2, .2}, {.1, .2}}); });
|
|
t.expectFalse([pA] { return intersect(pA, Polygon<3>{{1.5595, -.42437}, {1.64733, -.41987}, {1.83649, -.12711}}); });
|
|
t.expectTrue([pA] { return intersect(pA, Polygon<3>{{1.5595, -.42437}, {1.64733, -.41987}, {1.82541, -.1019}}); });
|
|
});
|
|
}
|