首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到两个CG点之间的距离?

如何找到两个CG点之间的距离?
EN

Stack Overflow用户
提问于 2009-12-15 18:31:47
回答 8查看 54.5K关注 0票数 86

当我们在UIScrollView中用两个手指进行多点触摸时,我们会得到两个CG点。我想知道它们之间的距离。然后,当我们再次进行挤压(内部或外部)时,我们将再次获得两分。然后,在找到这两个点之间的距离后,我想决定是收缩还是收缩。如果我挤进去了,新的距离肯定会更短,反之亦然。

但是不知道如何找到两个点之间的距离的准确测量来进行比较?有没有人知道这件事?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-12-15 18:57:25

p1p2之间的距离

代码语言:javascript
复制
CGFloat xDist = (p2.x - p1.x);
CGFloat yDist = (p2.y - p1.y);
CGFloat distance = sqrt(xDist * xDist + yDist * yDist);

放入一个函数:

代码语言:javascript
复制
func distance(_ a: CGPoint, _ b: CGPoint) -> CGFloat {
    let xDist = a.x - b.x
    let yDist = a.y - b.y
    return CGFloat(sqrt(xDist * xDist + yDist * yDist))
}

背景:Pythagorean theorem

如果您只需要计算点之间的距离是增大还是减小,则可以省略sqrt(),这将使其更快一些。

票数 130
EN

Stack Overflow用户

发布于 2013-04-13 12:52:26

您可以使用hypot()hypotf()函数来计算斜边。给定两个点p1p2

代码语言:javascript
复制
CGFloat distance = hypotf(p1.x - p2.x, p1.y - p2.y);

就是这样。

票数 190
EN

Stack Overflow用户

发布于 2015-07-08 21:15:33

面向swift用户的

代码语言:javascript
复制
extension CGPoint {
    func distance(to point: CGPoint) -> CGFloat {
        return sqrt(pow(x - point.x, 2) + pow(y - point.y, 2))
    }
}
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1906511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档