当我们在UIScrollView中用两个手指进行多点触摸时,我们会得到两个CG点。我想知道它们之间的距离。然后,当我们再次进行挤压(内部或外部)时,我们将再次获得两分。然后,在找到这两个点之间的距离后,我想决定是收缩还是收缩。如果我挤进去了,新的距离肯定会更短,反之亦然。
但是不知道如何找到两个点之间的距离的准确测量来进行比较?有没有人知道这件事?
发布于 2009-12-15 18:57:25
p1和p2之间的距离
CGFloat xDist = (p2.x - p1.x);
CGFloat yDist = (p2.y - p1.y);
CGFloat distance = sqrt(xDist * xDist + yDist * yDist);放入一个函数:
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(),这将使其更快一些。
发布于 2013-04-13 12:52:26
您可以使用hypot()或hypotf()函数来计算斜边。给定两个点p1和p2
CGFloat distance = hypotf(p1.x - p2.x, p1.y - p2.y);就是这样。
发布于 2015-07-08 21:15:33
面向swift用户的
extension CGPoint {
func distance(to point: CGPoint) -> CGFloat {
return sqrt(pow(x - point.x, 2) + pow(y - point.y, 2))
}
}https://stackoverflow.com/questions/1906511
复制相似问题