如何确定点是形状上还是形状
how to determine if points is on shape and in shape?
本文关键字:何确定 更新时间:2023-10-16
我有两个:
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)
如何找出形状/形状上的点并返回一个真实值,以便我可以将其存储在某个地方?
对于潜在的非凸形状,您可以使用如下算法:
- 查找从
(a,b)
开始与一条射线相交的形状边数。您可以选择任何射线,但如果光线是水平或垂直的,则更容易计算相交。 - 如果交叉点数为奇数,则点在里面。
尝试在 openCV 中阅读本教程,解释如何在多边形测试中使用该点。另一个很好的参考是这个维基页面,它涵盖了其他几种方法。
如果你不想使用 openCV - 一般来说你可以使用 Ray 投射算法:
- 从给定的点
(x,y)
到您想要的任何方向取一条线,我们称之为L
- 对于
((0,0),(0,2)), ((0,0),(2,0)), ((2,2),(0,2)), ((2,2),(2,0))
每条线,测试该线是否与L
相交,并计算N
的交集数 - 如果
N
是奇数,则(x,y)
点在多边形中
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何在C++中确定文本文件中的元素是字符还是数字
- Python中的for循环与C++有何不同
- 在clang++预处理器中确定gcc工具链版本
- 不确定要在我的main中放入什么才能使我的代码正常工作
- C++setiosflags函数操纵器-未确定的缩进
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 如何使用url确定网站协议
- 通过构造函数动态确定类实现
- 遍历并行数组以确定C++中的最大数字
- C++如果必须在编译时确定大小,std::array 有什么意义?
- 使用不变量来确定二分搜索中的边界条件
- 无论如何,我可以确定构造函数是否存在吗?
- compare_exchange C++函数如何确定竞争条件?
- 如何使用 do while 循环确定最高值和最低值
- 如何确定哪个标头调用 c++ 中的另一个标头
- 在C++中释放内存期间,迭代器与指针有何不同
- C++ Chrono 确定一天是否是周末?
- 什么是C++中的不确定行为?它与未定义的行为有何不同