2012-06-28 3 views
5

行の最後に2つの点があります。
この行の翻訳の終了座標を取得する必要があります。
翻訳は、元の行から距離dの平行線になります。ここ
は私が必要なものの画像です:行末の座標を変換する関数

enter image description here

だから私は、私はこの二点との距離を渡し、リターンの二つの新しい座標を取得することができます機能を必要としています。
私はしばらくこの問題に立ち往生しています。どんな助けもありがとう!
ありがとうございます!

+0

「距離」が正の場合、どの方向が投影されますか?負? – justderb

+0

この翻訳は別の方向なしではあいまいです。ラインから距離dだけ離れた直線に無数のラインがあります。 – cheeken

+2

私はそれが同じ長さのラインセグメントと元の平行にしたい。古い点と新しい点の間に線を引く場合、それは元の線と垂直な線を形成するはずです。それが明確かどうかわからない。私はイメージに見える線をしたい。 –

答えて

3

新しい座標が正規化ベクトル方向が動いているの乗じ

距離Dの結果として得られるベクトルとなり、元のベクトル点に加えました。

EDIT:

ラインの二つの点を考えると、あなたはこれらの点を結ぶベクトルのノーマルを計算する必要があります。 Information on that is here..

ノーマライズDによって乗算このベクターは、それぞれに加えます。

+0

ちょっと遊んだ後、私はそれを理解した!どうもありがとうございます。 –

2

ベクトル(x2-x1、y2-y1)を計算します。これはあなたの行の方向のベクトルです。法線ベクトルは、その後、あなたの距離dがあなたの翻訳されたポイントは

で与えられる。ここで与えられた
A = (y1-y2,x1-x2)/|(y1-y2,x1-x2)| 

をしたい方向の単位ベクトルを取得するには、そのサイズによって

(-(y2-y1),-(x2-x1)) = (y1-y2,x1-x2). 

デバイドこのベクトルで与えられます

NewPoint = OldPoint + d * A 
関連する問題