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

标签 objective-c cocoa distance nspoint

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

现在我有了另一个 NSPoint,这是鼠标下降的位置 (mousedown_nsp)。

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

我本来想通过比较来找到 mousedown_nsp 和其他 4 个 NSPoints 之间的距离,然后选择最小的距离,但我觉得必须有更好的方法。

有什么想法吗?

提前致谢!

最佳答案

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

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
    }
}

关于objective-c - 找到另一个 NSPoint 最接近哪个 NSPoint 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24618326/

相关文章:

ios - Apple Watch 模拟器中的自定义字体不显示

objective-c - QTKit - 合并两个具有不同宽度和高度的视频?

cocoa - 将核心数据模型与 Web 服务同步

mysql - sql查询中的毕达哥拉斯

ios - 如何获取CLLocationManager当前坐标

ios - 我可以通过调用另一个方法来执行设置的方式来实现属性 setter 吗?

objective-c - 在自定义纬度/经度处创建新的 CLLocationCoordinate2D

cocoa - 有关 cocoa 的帮助 : Objects as views?

android - 在 Android 中计算总行驶距离 Google Maps API V3

algorithm - 找到离其他 n 个点最远的点