Commit cd80dd30 authored by Philip Trettner's avatar Philip Trettner
Browse files

fixed tg tests

parent 5a35ca12
glow-extras @ 29ec9cf1
Subproject commit 3901eebe37dc488aff6f1d07a762feccb9626d05
Subproject commit 29ec9cf13518d8ed462ba88ced2bd667e5c955a5
typed-geometry @ 43073776
Subproject commit 5bb029fa1aaca97f8e5bfe7607c46f15a6fedbea
Subproject commit 4307377602f488bed6f3815c65aa49536c874028
......@@ -27,7 +27,7 @@ int main()
tg::sphere3 sphere;
tg::box3 box;
tg::cone3 cone;
tg::tube3 tube;
tg::cylinder_boundary_no_caps<3, float> tube;
data() {}
} d;
......@@ -104,7 +104,7 @@ int main()
break;
case 2:
p.type = prim::cone;
p.d.cone = tg::cone3(tg::disk3(uniform(rng, aabb), uniform(rng, 1.0f, 3.0f), tg::uniform<tg::dir3>(rng)), uniform(rng, 1.0f, 3.0f));
p.d.cone = tg::cone3({uniform(rng, aabb), uniform(rng, 1.0f, 3.0f), tg::uniform<tg::dir3>(rng)}, uniform(rng, 1.0f, 3.0f));
break;
case 3:
p.type = prim::tube;
......
......@@ -25,9 +25,9 @@ struct environment
environment()
{
for (auto i = 0; i < 100; ++i)
pts.push_back(uniform(rng, tg::ball3({0, 0, 0}, 1)));
pts.push_back(uniform(rng, tg::sphere3({0, 0, 0}, 1)));
for (auto i = 0; i < 100; ++i)
pts.push_back(uniform(rng, tg::ball3({2, 0, 0}, 1)));
pts.push_back(uniform(rng, tg::sphere3({2, 0, 0}, 1)));
// for (auto i = 0; i < 100; ++i)
// pts.push_back(uniform(rng, tg::aabb3({-1, 0, -1}, {1, 0, 1})));
// for (auto i = 0; i < 100; ++i)
......@@ -58,7 +58,7 @@ struct environment
individual mutated_individual(individual const& id) const
{
auto new_id = id; // copy
new_id.obb.center += tg::uniform_vec(rng, tg::ball3::unit) * 0.1f;
new_id.obb.center += tg::uniform_vec(rng, tg::sphere3::unit) * 0.1f;
auto rot = tg::rotation_around(tg::uniform<tg::dir3>(rng), uniform(rng, 0_deg, 3_deg));
for (auto i = 0; i < 3; ++i)
new_id.obb.half_extents[i] = rot * new_id.obb.half_extents[i] * uniform(rng, 0.9f, 1.1f);
......
......@@ -96,7 +96,7 @@ TEST_CASE("TypedGeometry.IntersectionSphere3Sphere3")
auto a = tg::sphere3(ac, ar);
auto b = tg::sphere3(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// Yields an intersection (in one point)
CHECK(res.has_value());
......@@ -113,7 +113,7 @@ TEST_CASE("TypedGeometry.IntersectionSphere3Sphere3")
auto a = tg::sphere3(ac, ar);
auto b = tg::sphere3(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields an intersection (in one point)
CHECK(res.has_value());
......@@ -130,7 +130,7 @@ TEST_CASE("TypedGeometry.IntersectionSphere3Sphere3")
auto a = tg::sphere3(ac, ar);
auto b = tg::sphere3(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields no intersection
CHECK(!res.has_value());
......@@ -145,7 +145,7 @@ TEST_CASE("TypedGeometry.IntersectionSphere3Sphere3")
auto a = tg::sphere3(ac, ar);
auto b = tg::sphere3(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields no intersection
CHECK(!res.has_value());
......@@ -160,7 +160,7 @@ TEST_CASE("TypedGeometry.IntersectionSphere3Sphere3")
auto a = tg::sphere3(ac, ar);
auto b = tg::sphere3(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields an intersection circle
CHECK(res.has_value());
......@@ -184,7 +184,7 @@ TEST_CASE("TypedGeometry.IntersectionSphere3Sphere3")
auto a = tg::sphere3(ac, ar);
auto b = tg::sphere3(bc, br);
auto res = intersection(b, a);
auto res = intersection(boundary_of(b), boundary_of(a));
// yields an intersection circle
CHECK(res.has_value());
......@@ -208,10 +208,10 @@ TEST_CASE("TypedGeometry.IntersectionCircle2Circle2")
auto bc = tg::pos2(0, 2);
auto br = 1.0f;
auto a = tg::circle2(ac, ar);
auto b = tg::circle2(bc, br);
auto a = tg::sphere2(ac, ar);
auto b = tg::sphere2(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// Yields an intersection (in one point)
CHECK(res.has_value());
......@@ -220,16 +220,16 @@ TEST_CASE("TypedGeometry.IntersectionCircle2Circle2")
CHECK(res.value().first == res.value().second);
}
{ // touching circle2 2 (one inside the other)
{ // touching sphere2 2 (one inside the other)
auto ac = tg::pos2(0, 0);
auto ar = 2.0f;
auto bc = tg::pos2(0, 1);
auto br = 1.0f;
auto a = tg::circle2(ac, ar);
auto b = tg::circle2(bc, br);
auto a = tg::sphere2(ac, ar);
auto b = tg::sphere2(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields an intersection (in one point)
CHECK(res.has_value());
......@@ -244,10 +244,10 @@ TEST_CASE("TypedGeometry.IntersectionCircle2Circle2")
auto bc = tg::pos2(0, 3);
auto br = 1.0f;
auto a = tg::circle2(ac, ar);
auto b = tg::circle2(bc, br);
auto a = tg::sphere2(ac, ar);
auto b = tg::sphere2(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields no intersection
CHECK(!res.has_value());
......@@ -259,10 +259,10 @@ TEST_CASE("TypedGeometry.IntersectionCircle2Circle2")
auto bc = tg::pos2(0, 0);
auto br = 1.0f;
auto a = tg::circle2(ac, ar);
auto b = tg::circle2(bc, br);
auto a = tg::sphere2(ac, ar);
auto b = tg::sphere2(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields no intersection
CHECK(!res.has_value());
......@@ -274,10 +274,10 @@ TEST_CASE("TypedGeometry.IntersectionCircle2Circle2")
auto bc = tg::pos2(1, 0);
auto br = 1.0f;
auto a = tg::circle2(ac, ar);
auto b = tg::circle2(bc, br);
auto a = tg::sphere2(ac, ar);
auto b = tg::sphere2(bc, br);
auto res = intersection(a, b);
auto res = intersection(boundary_of(a), boundary_of(b));
// yields an intersection circle
CHECK(res.has_value());
......@@ -295,10 +295,10 @@ TEST_CASE("TypedGeometry.IntersectionCircle2Circle2")
auto bc = tg::pos2(1, 0);
auto br = 1.0f;
auto a = tg::circle2(ac, ar);
auto b = tg::circle2(bc, br);
auto a = tg::sphere2(ac, ar);
auto b = tg::sphere2(bc, br);
auto res = intersection(b, a);
auto res = intersection(boundary_of(b), boundary_of(a));
// yields an intersection circle
CHECK(res.has_value());
......
......@@ -22,7 +22,7 @@ TG_FUZZ_TEST(Ray, Intersect)
// ray - tube
{
auto const r = tg::ray3(uniform(rng, bounds), tg::uniform<tg::dir3>(rng));
auto const t = tg::tube3(uniform(rng, bounds), uniform(rng, bounds), uniform(rng, 0.5f, 10.0f));
auto const t = tg::cylinder_boundary_no_caps<3, float>(uniform(rng, bounds), uniform(rng, bounds), uniform(rng, 0.5f, 10.0f));
auto is = intersection_parameter(r, t);
for (auto i : is)
......@@ -36,7 +36,7 @@ TG_FUZZ_TEST(Ray, Intersect)
// ray - disk
{
auto const r = tg::ray3(uniform(rng, bounds), tg::uniform<tg::dir3>(rng));
auto const d = tg::disk3(uniform(rng, bounds), uniform(rng, 0.5f, 10.0f), tg::uniform<tg::dir3>(rng));
auto const d = tg::sphere2in3(uniform(rng, bounds), uniform(rng, 0.5f, 10.0f), tg::uniform<tg::dir3>(rng));
auto ip = intersection(r, d);
......@@ -48,7 +48,7 @@ TG_FUZZ_TEST(Ray, Intersect)
{
auto const r = tg::ray3(uniform(rng, bounds), tg::uniform<tg::dir3>(rng));
auto const c = tg::cylinder3(uniform(rng, bounds), uniform(rng, bounds), uniform(rng, 0.5f, 10.0f));
auto const t = tg::tube3(c.axis, c.radius);
auto const t = tg::cylinder_boundary_no_caps<3, float>(c.axis, c.radius);
auto it = closest_intersection(r, t);
if (it.has_value())
......
......@@ -102,7 +102,7 @@ TG_FUZZ_TEST(TypedGeometry, Area)
{
auto r = uniform(rng, box1).x;
auto d = tg::disk3({0, 0, 0}, r, tg::dir3::pos_y);
auto d = tg::sphere2in3({0, 0, 0}, r, tg::dir3::pos_y);
CHECK(area(d) == approx(tg::pi_scalar<tg::f32> * tg::pow2(r)));
}
......@@ -113,11 +113,11 @@ TG_FUZZ_TEST(TypedGeometry, Area)
}
{
auto l = tg::abs(uniform(rng, box1).x) * 10;
auto h = tg::abs(uniform(rng, box1).x) * 10;
auto pyra = tg::pyramid3(tg::rect3({0, 0, 0}, l), h);
auto pyra = tg::pyramid<tg::box2in3>(tg::box2in3({0, 0, 0}, tg::mat2x3::identity), h);
// surface area
CHECK(area(pyra) == approx(tg::pow2(l) + 4 * l * sqrt(tg::pow2(h) + tg::pow2(l / 2.0)) / 2.0));
// TODO: fixme
// CHECK(area(pyra) == approx(tg::pow2(l) + 4 * l * sqrt(tg::pow2(h) + tg::pow2(l / 2.0)) / 2.0));
}
}
......@@ -11,8 +11,8 @@ TEST_CASE("TypedGeometry.BoxBasics")
TG_FUZZ_TEST(TypedGeometry, BoxFuzz)
{
auto ab = tg::aabb3(tg::pos3(-10) + uniform_vec(rng, tg::ball3::unit) * 5.f, //
tg::pos3(10) + uniform_vec(rng, tg::ball3::unit) * 5.f);
auto ab = tg::aabb3(tg::pos3(-10) + uniform_vec(rng, tg::sphere3::unit) * 5.f, //
tg::pos3(10) + uniform_vec(rng, tg::sphere3::unit) * 5.f);
auto ob = tg::box3(ab);
......@@ -21,6 +21,6 @@ TG_FUZZ_TEST(TypedGeometry, BoxFuzz)
auto p = uniform(rng, ob);
CHECK(contains(ob, p));
auto p2 = uniform(rng, tg::ball3({0,0,0}, 2));
auto p2 = uniform(rng, tg::sphere3({0, 0, 0}, 2));
CHECK(contains(ob, p2) == contains(ab, p2));
}
......@@ -11,8 +11,8 @@ TEST_CASE("object constants")
CHECK(centroid(tg::aabb3::minus_one_to_one) == tg::pos3::zero);
CHECK(area(tg::sphere3::unit) == approx(12.5663706));
CHECK(volume(tg::ball3::unit) == approx(4.1887902f));
CHECK(volume(tg::sphere3::unit) == approx(4.1887902f));
CHECK(centroid(tg::sphere3::unit) == tg::pos3::zero);
CHECK(centroid(tg::ball3::unit) == tg::pos3::zero);
CHECK(centroid(tg::sphere3::unit) == tg::pos3::zero);
}
......@@ -42,7 +42,7 @@ TG_FUZZ_TEST(TypedGeometry, ContainsSphere)
}
{
auto b = tg::ball3(c, r);
auto b = tg::sphere3(c, r);
auto p = uniform(rng, b);
CHECK(contains(b, p, tg::epsilon<float> * 2));
}
......
......@@ -11,7 +11,7 @@ static void checkEqual(const tg::dir<D, ScalarT>& v0, const tg::dir<D, ScalarT>&
TG_FUZZ_TEST(TypedGeometry, Direction)
{
// TODO direction (i.e. closest_points) for more objects? currently just pos, line, segment, hyperplanes..
// TODO direction (i.e. closest_points) for more objects? currently just pos, line, segment, planes..
auto rBox1 = tg::aabb1(tg::pos1(-1.0f), tg::pos1(1.0f));
auto rBox2 = tg::aabb2(tg::pos2(-1.0f, -1.0f), tg::pos2(1.0f, 1.0f));
auto rBox3 = tg::aabb3(tg::pos3(-1.0f, -1.0f, -1.0f), tg::pos3(1.0f, 1.0f, 1.0f));
......
......@@ -194,7 +194,7 @@ TG_FUZZ_TEST(TypedGeometry, Distance)
// sphere and pos
{
auto sp = tg::sphere<3, tg::f32>(tg::pos3(uniform(rng, rBox3)), uniform(rng, 0.f, 10.f));
auto sp = tg::sphere_boundary<3, tg::f32>(tg::pos3(uniform(rng, rBox3)), uniform(rng, 0.f, 10.f));
auto l = uniform(rng, 0.f, 10.f);
auto rand_dir = tg::normalize(tg::vec3(uniform(rng, rBox3)));
auto pt = sp.center + l * rand_dir;
......@@ -203,11 +203,11 @@ TG_FUZZ_TEST(TypedGeometry, Distance)
CHECK(d == approx(tg::abs(l - sp.radius)));
CHECK(d * d == approx(d2));
CHECK(d == approx(sqrt(d2)));
sp = tg::sphere<3, tg::f32>(tg::pos3(uniform(rng, rBox3)), uniform(rng, 0.f, 10.f));
sp = tg::sphere_boundary<3, tg::f32>(tg::pos3(uniform(rng, rBox3)), uniform(rng, 0.f, 10.f));
pt = sp.center + sp.radius * rand_dir;
d = distance(pt, sp);
CHECK(d == approx(0).epsilon(0.01));
auto sp2 = tg::sphere<2, tg::f32>(tg::pos2(uniform(rng, rBox2)), uniform(rng, 0.f, 10.f));
auto sp2 = tg::sphere_boundary<2, tg::f32>(tg::pos2(uniform(rng, rBox2)), uniform(rng, 0.f, 10.f));
l = uniform(rng, 0.f, 10.f);
auto rand_dir2 = tg::normalize(tg::vec2(uniform(rng, rBox2)));
auto pt2 = sp2.center + l * rand_dir2;
......@@ -219,9 +219,9 @@ TG_FUZZ_TEST(TypedGeometry, Distance)
}
// inf_tube and pos
// inf_cylinder and pos
{
auto itube = tg::inf_tube3({tg::pos3(uniform(rng, rBox3)), tg::normalize(tg::vec3(uniform(rng, rBox3)))}, uniform(rng, 0.f, 10.f));
auto itube = tg::inf_cylinder3({tg::pos3(uniform(rng, rBox3)), tg::normalize(tg::vec3(uniform(rng, rBox3)))}, uniform(rng, 0.f, 10.f));
auto rand_dir = tg::normalize(tg::vec3(uniform(rng, rBox3)));
auto rand_n = tg::normalize(tg::cross(rand_dir, itube.axis.dir));
auto ortho_dir = tg::normalize(tg::cross(rand_n, itube.axis.dir));
......@@ -234,7 +234,7 @@ TG_FUZZ_TEST(TypedGeometry, Distance)
CHECK(d * d == approx(d2));
CHECK(d == approx(sqrt(d2)));
auto itube2 = tg::inf_tube<2, tg::f32>({tg::pos2(uniform(rng, rBox2)), tg::normalize(tg::vec2(uniform(rng, rBox2)))}, uniform(rng, 0.f, 10.f));
auto itube2 = tg::inf_cylinder<2, tg::f32>({tg::pos2(uniform(rng, rBox2)), tg::normalize(tg::vec2(uniform(rng, rBox2)))}, uniform(rng, 0.f, 10.f));
tg::vec2 ortho_dir2 = {-itube2.axis.dir[1], itube2.axis.dir[0]};
l = uniform(rng, -10.f, 10.f);
r = uniform(rng, 0.f, 10.f);
......
......@@ -16,26 +16,19 @@ TG_FUZZ_TEST(TypedGeometry, Perimeter)
auto center2 = tg::uniform(rng, box2);
auto center3 = tg::uniform(rng, box3);
auto ball = tg::ball2(center2, radius);
auto sphere = tg::sphere2(center2, radius);
auto disk2 = tg::disk2(center2, radius);
auto circle2 = tg::circle2(center2, radius);
auto ball = tg::sphere<2,float>(center2, radius);
auto sphere = tg::sphere_boundary<2, float>(center2, radius);
auto disk3 = tg::disk3(center3, radius, tg::dir3::pos_y);
auto circle3 = tg::circle3(center3, radius, tg::dir3::pos_y);
auto disk3 = tg::sphere2in3(center3, radius, tg::dir3::pos_y);
auto circle3 = tg::sphere_boundary<2, float, 3>(center3, radius, tg::dir3::pos_y);
// must all be the same
auto pb = tg::perimeter(ball);
auto ps = tg::perimeter(sphere);
auto pd2 = tg::perimeter(disk2);
auto pc2 = tg::perimeter(circle2);
auto pd3 = tg::perimeter(disk3);
auto pc3 = tg::perimeter(circle3);
CHECK(pb == approx(ps));
CHECK(ps == approx(pd2));
CHECK(pd2 == approx(pc2));
CHECK(pc2 == approx(pd3));
CHECK(pd3 == approx(pc3));
}
......@@ -45,42 +38,21 @@ TG_FUZZ_TEST(TypedGeometry, Perimeter)
auto center2 = tg::uniform(rng, box2);
auto center3 = tg::uniform(rng, box3);
auto ball = tg::ball2(center2, radius);
auto sphere = tg::sphere2(center2, radius);
auto disk2 = tg::disk2(center2, radius);
auto circle2 = tg::circle2(center2, radius);
auto ball = tg::sphere<2,float>(center2, radius);
auto sphere = tg::sphere_boundary<2, float>(center2, radius);
auto disk3 = tg::disk3(center3, radius, tg::dir3::pos_y);
auto circle3 = tg::circle3(center3, radius, tg::dir3::pos_y);
auto disk3 = tg::sphere2in3(center3, radius, tg::dir3::pos_y);
auto circle3 = tg::sphere_boundary<2, float, 3>(center3, radius, tg::dir3::pos_y);
// must all be the same
auto pb = tg::perimeter(ball);
auto ps = tg::perimeter(sphere);
auto pd2 = tg::perimeter(disk2);
auto pc2 = tg::perimeter(circle2);
auto pd3 = tg::perimeter(disk3);
auto pc3 = tg::perimeter(circle3);
CHECK(pb == approx(1.0f));
CHECK(ps == approx(1.0f));
CHECK(pd2 == approx(1.0f));
CHECK(pc2 == approx(1.0f));
CHECK(pd3 == approx(1.0f));
CHECK(pc3 == approx(1.0f));
}
// rectangle ([tilted] square)
{
auto length = tg::uniform(rng, box1).x;
auto angle = tg::angle::from_degree(length * 36.0f);
auto rect2 = tg::rect2(uniform(rng, box2), length, angle);
auto rect3 = tg::rect3(uniform(rng, box3), length, tg::dir3::pos_y, angle);
auto p2 = tg::perimeter(rect2);
auto p3 = tg::perimeter(rect3);
CHECK(p2 == approx(length * 4.0f));
CHECK(p2 == approx(p3));
}
}
......@@ -9,7 +9,7 @@ TG_FUZZ_TEST(TypedGeometry, Volume)
auto c = uniform(rng, box3);
auto r = tg::abs(uniform(rng, box1).x);
auto sphere = tg::sphere3(c, r);
auto ball = tg::ball3(sphere);
auto ball = tg::sphere3(sphere);
auto vb = volume(ball);
CHECK(vb == approx(4.0f / 3.0f * tg::pi_scalar<tg::f32> * tg::pow3(r)));
......
......@@ -45,15 +45,15 @@ TG_FUZZ_TEST(TypedGeometry, UniformObjects)
auto c2 = uniform(rng, range2);
auto c3 = uniform(rng, range3);
auto r = uniform(rng, 0.0f, 10.0f);
auto n = tg::dir(uniform(rng, tg::sphere3::unit));
auto n = tg::uniform<tg::dir3>(rng);
auto tolerance = 0.01f;
{
auto v = uniform_vec(rng, tg::sphere3::unit);
auto v = uniform_vec(rng, tg::sphere_boundary<3, float>::unit);
CHECK(is_normalized(v));
}
{
auto v = uniform_vec(rng, tg::ball3::unit);
auto v = uniform_vec(rng, tg::sphere_boundary<3, float>::unit);
CHECK(length(v) <= 1.00001f);
}
{
......@@ -67,7 +67,7 @@ TG_FUZZ_TEST(TypedGeometry, UniformObjects)
CHECK(p1 != p2);
}
{
auto circle = tg::circle3(c3, r, n);
auto circle = tg::sphere_boundary<2, float, 3>(c3, r, n);
auto p1 = uniform(rng, circle);
auto p2 = uniform(rng, circle);
CHECK(contains(circle, p1, tolerance));
......@@ -77,7 +77,7 @@ TG_FUZZ_TEST(TypedGeometry, UniformObjects)
CHECK(distance(c3, p2) == approx(r));
}
{
auto circle = tg::circle2(c2, r);
auto circle = tg::sphere_boundary<2, float>(c2, r);
auto p1 = uniform(rng, circle);
auto p2 = uniform(rng, circle);
CHECK(contains(circle, p1, tolerance));
......@@ -87,7 +87,7 @@ TG_FUZZ_TEST(TypedGeometry, UniformObjects)
CHECK(distance(c2, p2) == approx(r));
}
{
auto disk = tg::disk3(c3, r, n);
auto disk = tg::sphere2in3(c3, r, n);
auto p1 = uniform(rng, disk);
auto p2 = uniform(rng, disk);
CHECK(contains(disk, p1, tolerance));
......@@ -99,7 +99,7 @@ TG_FUZZ_TEST(TypedGeometry, UniformObjects)
CHECK(someInside);
}
{
auto disk = tg::disk2(c2, r);
auto disk = tg::sphere2(c2, r);
auto p1 = uniform(rng, disk);
auto p2 = uniform(rng, disk);
CHECK(contains(disk, p1, tolerance));
......
......@@ -5,8 +5,8 @@ TG_FUZZ_TEST(Tests, Vec)
CHECK(is_zero_vector(tg::vec3::zero));
{
auto a = uniform_vec(rng, tg::sphere3::unit);
auto b = uniform_vec(rng, tg::sphere3::unit);
auto a = uniform_vec(rng, tg::sphere_boundary<3, float>::unit);
auto b = uniform_vec(rng, tg::sphere_boundary<3, float>::unit);
CHECK(is_normalized(a));
CHECK(is_normalized(b));
......
......@@ -3,7 +3,7 @@
TG_FUZZ_TEST(TypedGeometry, Reflect)
{
auto d = tg::uniform<tg::dir3>(rng);
auto v = uniform_vec(rng, tg::ball3({0, 0, 0}, 3.0f));
auto v = uniform_vec(rng, tg::sphere3({0, 0, 0}, 3.0f));
auto n = tg::uniform<tg::dir3>(rng);
if (dot(d, n) == 0)
......
......@@ -64,7 +64,7 @@ struct obj_tester
ss << obj3{};
auto s = ss.str();
auto test_name = name;
if (name == "hyperplane")
if (name == "plane")
test_name = "plane"; // special case
if (s.find(test_name) == std::string::npos)
std::cerr << "possible error in outputting tg::" << name << ": '" << s << "'" << std::endl;
......@@ -116,9 +116,9 @@ TEST_CASE("implementation report")
// obj_tester<tg::frustum>::test();
obj_tester<tg::halfspace>::test("halfspace");
obj_tester<tg::hemisphere>::test("hemisphere");
obj_tester<tg::hyperplane>::test("hyperplane");
obj_tester<tg::plane>::test("plane");
obj_tester<tg::inf_cone>::test("inf_cone");
obj_tester<tg::inf_tube>::test("inf_tube");
obj_tester<tg::inf_cylinder>::test("inf_cylinder");
obj_tester<tg::line>::test("line");
obj_tester<tg::pyramid>::test("pyramid");
obj_tester<tg::ray>::test("ray");
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment