从点阵列中找到最近的点

时间:2014-05-19 00:15:23

标签: objective-c cocoa

我有一系列CGPoints(好吧,实际上NSStrings是CGPoints)。

我有一个名为CGPoint nextPoint的单独点。

如何找出我的阵列中哪个CGPoint最接近nextPoint?

2 个答案:

答案 0 :(得分:3)

您是否考虑过简单地遍历数组并finding the distance between all the points

您可以将距离存储在新的NSMutableArray中,然后存储在grab the smallest value from it

答案 1 :(得分:1)

像毕达哥拉斯一样迭代和计算并比较结果。

sqrt( ( exp( x1 - x2, 2) + exp( y1 - y2, 2 ) ) );

您可能想要检查CGFloat是浮点数还是双精度数,并在适当时使用这些函数的浮点版本。 有一个宏定义了这个。

if (CGFLOAT_IS_DOUBLE == YES) {

如果是,则使用上面的,如果否,则使用以f

结尾的函数版本

如果您要比较的点数足够大,您需要更快地完成它,您可以尝试各种方法并行查找点的子集中的最短距离,然后比较这些操作的结果。