43 #include <visp3/core/vpPolygon.h>
46 #include <visp3/core/vpConfig.h>
47 #include <visp3/core/vpRect.h>
49 #ifdef VISP_HAVE_CATCH2
50 #define CATCH_CONFIG_RUNNER
53 #ifdef VISP_HAVE_OPENCV
54 TEST_CASE(
"Check OpenCV-bsed convex hull")
56 SECTION(
"From vpRect")
58 const vpRect rect { 0, 0, 200, 400 };
59 const std::vector<vpImagePoint> rect_corners { rect.
getTopLeft(), rect.getTopRight(), rect.getBottomRight(),
60 rect.getBottomLeft() };
66 #if ((__cplusplus >= 201402L) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201402L)))
67 for (
const auto &poly_corner : poly.getCorners()) {
68 REQUIRE(std::find(cbegin(rect_corners), cend(rect_corners), poly_corner) != cend(rect_corners));
71 for (
const auto &poly_corner : poly.getCorners()) {
72 REQUIRE(std::find(begin(rect_corners), end(rect_corners), poly_corner) != end(rect_corners));
79 int main(
int argc,
char *argv[])
81 Catch::Session session;
82 session.applyCommandLine(argc, argv);
91 #ifdef VISP_HAVE_OPENCV
92 const vpRect rect(0, 0, 200, 400);
93 std::vector<vpImagePoint> rect_corners;
94 rect_corners.push_back(rect.getTopLeft());
95 rect_corners.push_back(rect.getTopRight());
96 rect_corners.push_back(rect.getBottomRight());
97 rect_corners.push_back(rect.getBottomLeft());
103 #if ((__cplusplus >= 201402L) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201402L)))
104 for (
const auto &poly_corner : poly.
getCorners()) {
105 if (std::find(cbegin(rect_corners), cend(rect_corners), poly_corner) == cend(rect_corners)) {
110 for (
const auto &poly_corner : poly.
getCorners()) {
111 if (std::find(begin(rect_corners), end(rect_corners), poly_corner) == end(rect_corners)) {
124 if (!testConvexHull()) {
Defines a generic 2D polygon.
const std::vector< vpImagePoint > & getCorners() const
void buildFrom(const std::vector< vpImagePoint > &corners, const bool create_convex_hull=false)
Defines a rectangle in the plane.
vpImagePoint getTopLeft() const