1 // Some tests for vgl_convex
2 // Ian Scott, Feb 2004.
3 #include <iostream>
4 #include "testlib/testlib_test.h"
5 #include "vgl/vgl_convex.h"
6 #ifdef _MSC_VER
7 # include "vcl_msvc_warnings.h"
8 #endif
9
10 static void
test_convex()11 test_convex()
12 {
13 std::cout << "Test 2d convex hull\n\n"
14 << "Inputs\n";
15 // Simple triangle
16 std::vector<vgl_point_2d<double>> pts;
17 pts.emplace_back(0.0, 0.0);
18 pts.emplace_back(0.0, 0.0);
19 pts.emplace_back(5.0, 0.0);
20 pts.emplace_back(3.0, 1.0);
21 pts.emplace_back(2.0, 1.0);
22 pts.emplace_back(0.0, 5.0);
23
24 for (auto & pt : pts)
25 std::cout << '(' << pt.x() << ',' << pt.y() << ") ";
26 std::cout << std::endl;
27
28 vgl_polygon<double> poly = vgl_convex_hull(pts);
29 std::cout << "Outputs\n";
30 poly.print(std::cout);
31 std::cout << std::endl;
32
33 TEST("inside", poly.contains(pts[0]), true);
34 TEST("inside", poly.contains(pts[1]), true);
35 TEST("inside", poly.contains(pts[3]), true);
36 TEST("inside", poly.contains(pts[4]), true);
37 }
38
39 TESTMAIN(test_convex);
40