繁体   English   中英

如何确定点的形状和形状?

[英]how to determine if points is on shape and in shape?

我有两个:

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)

如何找出形状/形状上的点并返回真实值,以便将其存储在某处?

对于潜在的非凸形状,可以使用如下算法:

  1. 查找从(a,b)开始有多少条形状边与射线相交。 您可以选择任何一条射线,但是如果射线是水平或垂直的,则计算交点会更容易。
  2. 如果相交数为奇数,则点位于内部。

尝试翻阅openCV中的本教程 ,解释如何在多边形测试中使用该 Wiki页面也是一个很好的参考,其中涵盖了其他几种方法。

如果您不想使用openCV-通常可以使用Ray投射算法:

  1. 从给定点(x,y)沿您想要的任何方向取一条线,我们称其为L
  2. 对于((0,0),(0,2)), ((0,0),(2,0)), ((2,2),(0,2)), ((2,2),(2,0))测试该线是否与L相交并计算相交数N
  3. 如果N是奇数,则点(x,y)在多边形中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM