2点、a
とb
があります。私はそれらの間の角度を計算する必要があるので、私はそれらをベクトルのように扱います。しかし、ベクターa
は常に[0 0 0]と定義されます。 MATLABニュースキャスター、「Angle between two vectors」上に読み出し、三つの溶液が提供される:Matlabの2つのベクトル間の角度
x1 = 0;
y1 = 0;
z1 = 0;
x2 = 0;
y2 = 1;
z2 = 0;
a = [x1,y1,z1]; b= [x2,y2,z2];
theta = rad2deg(atan2(norm(cross(a,b)),dot(a,b)))
theta = rad2deg(acos(dot(a,b)))
theta = rad2deg(atan2(x1*y2-x2*y1,x1*x2+y1*y2))
シータがゼロに近づくにつれてacos
精度の問題を有している、まだ3つの式のうち、唯一acos
が正しい解決策を提供するができます。
acos
を引き続き使用するか、より良い解決策がありますか?
は、2点間の角度は何ですか?そして、2つのベクトルのうちの1つが[0 0 0]のとき、ベクトル間の角度はどのくらいですか? – Henrik
2つのベクトルの間の角度が1のときの角度を見つけることは、どういう意味ですか?あなたは[1 1 1]ではないはずですか?また、acosの数式は、ベクトルが単位長である場合にのみ有効です。これは、少なくともaにとっては当てはまりません。 – Xodarap