1. ホーム
  2. iphone

[解決済み] 2つのCG点間の距離の求め方は?

2023-05-05 09:28:37

質問

UIScrollViewで2本指のマルチタッチをすると、2つのCG点ができる。その間の距離を求めたいのですが。その後、再びピンチ(内側または外側)を行うと、再び2つの点が得られます。そして、この2点間の距離を求めた後、内側に挟んだのか、外側に挟んだのか判断したい。もし、内側に挟んだのであれば、新しい距離はきっと小さくなりますし、その逆もまた然りです。

しかし、比較を行うための2点間の距離の正確な測定値を見つける方法がわかりません。誰かこれについてのアイデアを持っていますか?

どのように解決するのですか?

の間の距離 p1p2 :

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

背景 ピタゴラスの定理

点間の距離が増加するか減少するかを計算するだけなら、sqrt()を省略することができ、少し速く計算できます。