找到另一个NSPoint最接近哪个NSPoint的最佳方法是什么?

时间:2014-07-07 19:28:17

标签: objective-c cocoa distance nspoint

我有4个NSPoints,它们是矩形的4个角落

现在我有另一个NSPoint,这是鼠标停机的地方( mousedown_nsp )。

找到与 mousedown_nsp 相关的最近的NSPoint(4个矩形角NSPoints中)的最佳方法是什么?

我正在考虑进行比较以找到 mousedown_nsp 与其他4个NSPoints之间的距离,然后选择最小的距离,但我觉得必须有更好的方法。

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

也许是这样的(这假设一个非旋转的矩形):

NSPoint tl = ... // top-left corner
NSPoint tr = ... // top-right corner
NSPoint bl = ... // bottom-left corner
NSPoint br = ... // bottom-right corner
NSPoint pt = ... // the point

NSPoint center = NSMakePoint((tl.x + tr.x) / 2.0, (tl.y + bl.y) / 2.0);
NSPoint closest;
if (pt.x < center.x) {
    if (pt.y < center.y) {
        closest = tl; // point is in upper-left quadrant
    } else {
        closest = bl; // point is in lower-left quadrant
    }
} else {
    if (pt.y < center.y) {
        closest = tr; // point is in upper-right quadrant
    } else {
        closest = br; // point is in lower-right quadrant
    }
}