for( i = 0; i < total; i++ )
{
- int dist;
v0 = v;
v = cnt[i];
continue;
}
- dist = (ip.y - v0.y)*(v.x - v0.x) - (ip.x - v0.x)*(v.y - v0.y);
+ int64 dist = static_cast<int64>(ip.y - v0.y)*(v.x - v0.x)
+ - static_cast<int64>(ip.x - v0.x)*(v.y - v0.y);
if( dist == 0 )
return 0;
if( v.y < v0.y )
ASSERT_TRUE(norm(img - img_draw_contours, NORM_INF) == 0.0);
}
+TEST(Imgproc_PointPolygonTest, regression_10222)
+{
+ vector<Point> contour;
+ contour.push_back(Point(0, 0));
+ contour.push_back(Point(0, 100000));
+ contour.push_back(Point(100000, 100000));
+ contour.push_back(Point(100000, 50000));
+ contour.push_back(Point(100000, 0));
+
+ const Point2f point(40000, 40000);
+ const double result = cv::pointPolygonTest(contour, point, false);
+ EXPECT_GT(result, 0) << "Desired result: point is inside polygon - actual result: point is not inside polygon";
+}
+
/* End of file. */