Heading
我需要找到最接近点的多边形的索引
所以在这种情况下,输出将是 4 和 0。这样,如果添加了红点,我就知道将顶点放置在数组中的位置。有谁知道从哪里开始?
(抱歉,如果标题有误导性,我不知道如何正确表达它)
![enter image description here](https://i.stack.imgur.com/SIjjZ.png)
In this case the ouput would be 0 and 1, rather than the closest 4.
Point P位于该段上AB,如果两个简单条件同时满足:
AP x PB = 0
//叉积,向量共线或反对共线,P位于AB线上
AP . PB > 0
//标量积,排除反共线情况以确保P在段内
因此您可以检查所有顺序顶点对(伪代码):
if (P.X-V[i].X)*(V[i+1].Y-P.Y)-(P.Y-V[i].Y)*(V[i+1].X-P.X)=0 then
//with some tolerance if point coordinates are float
if (P.X-V[i].X)*(V[i+1].X-P.X)+(P.Y-V[i].Y)*(V[i+1].Y-P.Y)>0
then P belongs to (i,i+1) segment
这是快速直接(暴力)方法。
计算机几何中存在特殊的数据结构,可以快速选择候选线段 - 例如,r-tree http://en.wikipedia.org/wiki/R-tree。但是这些复杂的方法对于长(多点)折线以及多次使用同一多边形的情况会有所帮助(因此预处理可以忽略不计)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)