2016-11-20 1 views
0

中心円の周りの固定ノルムのベクトルでポイントを移動する必要があります。 これを行うには、私のポイントに適用する円の接線ベクトルを計算する必要があります。ここ円に接するベクトルを見つける

は、説明するグラフである。 enter image description here

だからP1の座標、円の半径と中心とベクトルノルムdを知っています。私はp2(=ベクトルvの向きを見つける)を見つける必要があります。

私はそれを見つける必要があるいくつかのアイデアをグラフに載せました:p1 'は円に投影されます。そして、tはp1 'のCに対する接ベクトルです。

これは簡単ですが、これを実装する方法を理解するには数学的に弱すぎます。だから、私はこの実装のアイデアが欲しいです(言語には無関心です、javascriptはクールです)。

これで時計回りと反時計回りの動きを実装する方法を教えてください。

編集:この

let vx = cx - p1x, 
    vy = cy - p1y, 
    norm = Math.sqrt((vx * vx) + (vy * vy)), 
    p2x = p1x - (vy * d/norm), 
    p2y = p1y + (vx * d/norm); 

を取得しかし、癖がまだある:時間でこれを使用して、ポイントは、ゆっくりとスパイラルを行って、円の中心から離れつつあります。

答えて

1
  1. 円 - 点P1のベクトル中心を取得します。このベクトルを v1としましょう。

  2. 接線ベクトル 't'はv1に垂直です。 v1 =(vx、vy)の場合、 t =( - vy、vx)。値と記号を交換するだけです(私は-vyと書いていますが、-vxでも構いませんが、-vy、-vxの両方ではありません)。

  3. 一つの方向を設定するか、注文がちょうど(-vx、VY)T2 = -T1 =を使用している、または(-Vy、VX)は、正規化された使用しなければならない運動のため

(|| V || = 1)ベクトル。

+0

ありがとうございます。 P1X、 VY = CY - - P1Y、 規範= Math.sqrt((VX * VX)+(VYの*のVY))、 P2X = P1X '' 'VX = CXを聞かせて:あなたの兆候を以下の私はこれを得ました(vx * d/norm); '' ' しかし、それでも動作しません。 p2の値は期待通りではありません。私のコードに何か問題がありますか? – Cobaltway

+0

私は垂直ベクトルが、あなたが言ったように値をスワップするだけでなく、符号の1つを反転することによっても得られることを理解しました。私はあなたがそれを編集すればあなたの答えを受け入れることがうれしいです。 – Cobaltway

+0

ところで、私の質問に追加したアルゴリズムでは、ポイントがゆっくりと中心から離れ、スパイラルを実行するのは普通ですか? – Cobaltway

関連する問題