2016-08-01 5 views
2

2点で定義された線から点までの距離がわかります。Shortest distance between a point and a line segmentその回答内でhttp://paulbourke.net/geometry/pointlineplane/は、その点までの距離を決定する方法を示す線に接する点P3を有する線P1、P2を示す。これはGPSアプリケーションなので、行の見出しはすでに決定されているので、ポイントスロープの式や傍受をその制限に使用しないことを望みます。その行に接する3番目の点に基づいて点を見つけよう

P1 P2で定義されたP3からその線が接する線上のポイントを戻したいと思います。前もって感謝します。

編集:

1) Calculate distance to point by 2 point line to P3 but don't take abs value 
2) If distance < 0 then side = 1 else side = -1 
3) dist = abs(distance) 
4) rad2 = heading + PI/2 * side //tangent is always 90 degrees to line 
5) sin rad2*dist + P3.x = point Q.x 
6) cos rad2*dist + P3.y = point Q.y 

にかかわらずにポイントがある側を動作するようだ:私は解決策が、その少し面倒を持っていますが、そうでないかもしれない、それは確かに動作します

sketch

+2

あるあなたは多分スケッチを追加することができます。要求を視覚化するのに問題があります。 – ja72

+0

画像には線が表示されます。点Pも既知であり、上記のようにP3である。私はQ [1]を決定したいと思う:http://i.stack.imgur.com/bTFIg.gif – Briantee

+0

あなたが正しいかどうか、あなたの場合P1、P2、P3がわかっていて、接線も分かっているベクター? –

答えて

0

式がA*x+B*y+C=0であり、点がPであることがわかっている場合utside線上次に座標(P_x,P_y)最も近い P へとラインも

x = (A^2*P_y-A*B*P_x-B*C)/(A^2+B^2) 
y = (B^2*P_x-A*B*P_y-A*C)/(A^2+B^2) 

ラインをポイントPの最小距離である

d = ABS(A*P_x+B*P_y+C)/SQRT(A^2+B^2) 

編集1

tを通過する無限線の方程式ポイント(x_1,y_1)(x_2,y_2)

A*x+B*x+C=0 
(y_1-y_2)*x + (x_2-x_1)*y + (x_1*y_2-x_2*y_1) = 0 

で編集2

WOラインがポイント(Q_x,Q_y)と方向(e_x,e_y)から与えられている場合は、方程式の係数が

A = -e_y 
B = e_x 
C = Q_x*e_y - Q_y*e_x 
+0

しかし、線は方程式では分かりません。あなたの答えをありがとう、それは非常に良い場合は、方程式がわかっています。私は無限の線を定義するP1とP2だけを使いたいのですが、P3はその線に沿ってどこでもかまいません。 – Briantee

+0

それでは、線はどのように定義されていますか? 1)2点、2)点と方向、3)方程式、4)他の構成。 – ja72

+0

1.ポイントと見出しから得られた2つのポイント。私は解決策がありますが、それはちょっと面倒です: 1)2点の線でP3までの距離を計算します。 2)dist = abs(距離)4)rad2 =見出し+ PI/2 * 5)sin * rad2 * dist + P3.x = point x 6) cos * rad2 * dist + P3.y = point y – Briantee

関連する問題