2016-11-08 12 views
0

私は下のコードで与えられた各行の法線の方向を決定するのが好きです。 Matlabでこれを行う方法はありますか?ベクトルの方向を決定する方法(またはその法線)

x = linspace(-10,10, 12); 
y1 = -(0.5*x) + 1.333; 
plot(x, y1); hold on 

%2nd line 
xd = 5; 
plot(xd, x, 'o') 

%vectors and normal vectors 
n1 = [0.5, 1]; v1 = [1, -0.5]; 
n2 = [-5, 0]; v2 = [0, 5]; 
angle = (acos(dot(v1, v2)/(norm(v1) * norm(v2))) * 180/pi) 

ありがとうございます。

+0

「方向」の意味は?あなたはすでに方向ベクトルを持っています。 – MBo

答えて

0

直線上の任意の2つの点(p0、f(p0))と(p1、f(p1))を選択し、線の傾きを(f )-f(p0))/(p1-p0)となる。あなたの行の最初と最後のポイントを選んでみましょう(1と最後でインデックス付けされています)。

最初の直線の傾きがある:-0.5に計算

slope = (y1(end) - y1(1))/(x(end) - x(1)); 

- 私たちはその行のあなたの定義を与えられた期待まさに。

第二の線の傾きである:それは垂直線であるため、無限大である

slope = (x(end) - x(1))/(xd - xd); 

線の法線の傾きが-1その線の傾きで除算する:

normal_slope = -1/slope; 

MATLAB -1/INFを設定する面倒を== -1 /( - INF)== 0であるので、勾配が無限大のときに特殊ケースを切り離す必要はありません。

この計算から、1行目の法線の傾きは2であり、2行目の法線の傾きは0であることが予想されます。

関連する問題