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