2017-12-18 26 views
0

私の現在のプロジェクトでは、ユーザーはX、Y面上の2箇所をタップします。 2つのポイントをタップすると、ユーザーはクリックしてドラッグして、元の2つの場所から始まる2つの新しいポイントを完全な長方形(90度コーナー)に拡張する必要があります。 垂直スロープに沿った2点の移動距離

数学は非常にシンプルなようですが、私はちょうど垂直な勾配(ある距離だけ)に沿ってこれらの2つの点をスライドさせる正しい構成を得ることができません。

私の現在の試みは、垂直な勾配を見つけてそれをX距離(ユーザーがドラッグした距離)だけスライドさせることですが、パーペットを翻訳することに固執しています。距離による勾配。あなたは点AとBの差分ベクトル

D = (Dx, Dy) = (Bx - Ax, By - Ay) 

正規化(単位)ベクトル

Len = Sqrt(Dx*Dx + Dy*Dy) 
(dx, dy) = (Dx/Len, Dy/Len) 

垂直単位ベクトル

を有する

enter image description here

enter image description here

答えて

1
(px, py) = (-dy, dx) 

距離Lだけシフト

pL = (px * L, py * L) 

そこで座標二つの可能なシフト方向

ため

(a'x, a'y) = (Ax +/- px * L, Bx +/- py * L) 

+又は-を有することになるシフト

関連する問題