C++ 如何确定点是在形状上还是在形状中?
我有两个:C++ 如何确定点是在形状上还是在形状中?,c++,computational-geometry,C++,Computational Geometry,我有两个: bool isPointOnShape(int a, int b) { } bool isPointInShape(int a, int b) { } 假设我有一个正方形,第一点(左下角)是x,y(0,0),第二点(左上角)是(0,2),第三点是(2,2),第四点是(0,2) 形状上的点是(0,1)(1,2)(2,1)(1,0),形状上的点是(1,1) 如何找出shape/in shape上的点并返回真实值,以便将其存储在某个位置?尝试在openCV中介绍如何使用多边形测试中
bool isPointOnShape(int a, int b)
{
}
bool isPointInShape(int a, int b)
{
}
假设我有一个正方形,第一点(左下角)是x,y(0,0),第二点(左上角)是(0,2),第三点是(2,2),第四点是(0,2)
形状上的点是(0,1)(1,2)(2,1)(1,0),形状上的点是(1,1)
如何找出shape/in shape上的点并返回真实值,以便将其存储在某个位置?尝试在openCV中介绍如何使用多边形测试中的点。wiki页面也是一个很好的参考,它涵盖了其他几种方法
如果不想使用openCV,通常可以使用光线投射算法:
(x,y)
向任意方向取一条线,我们称之为L
((0,0),(0,2)),((0,0),(2,0)),((2,2),(0,2)),((2,2),(2,0)),(/code>中的每一条线,测试该线是否与L
相交,并计算相交数N
N
为奇数,则点(x,y)
位于多边形中对于潜在的非凸形状,可以使用如下算法:
(a,b)
开始与射线相交的形状边数。您可以选择任何光线,但如果光线是水平或垂直的,则更容易计算交点点
{1,1}
不是形状中唯一的点。为什么会这样?此外,找到该点的方法显然取决于类型或形状及其参数,从何处获得这些信息?这些是光栅点,即像素吗?