Angle between two vectors in 3d

227 ビュー (過去 30 日間)
developer
developer 2011 年 9 月 20 日
コメント済み: Bruno Luong 2023 年 2 月 1 日
Hello,
I have two vectors in 3d and i want to find the angle between those two vectors.
Thanks in advance

採用された回答

Jan
Jan 2011 年 9 月 20 日
Or:
angle = atan2(norm(cross(a,b)), dot(a,b))
See this compact discussion about this topic: CSSM: Angle between two vectors . Only 71 replies (Google finds 89 replies, so I assume 18 spam messages?) and 68300 views currently...
[EDITED]: W. Kahan suggested in his paper "Mindeless.pdf":
2 * atan(norm(x*norm(y) - norm(x)*y) / norm(x * norm(y) + norm(x) * y))
  9 件のコメント
Dyuman Joshi
Dyuman Joshi 2023 年 2 月 1 日
@Jan the CSSM thread you linked does not exist anymore.
Do you happen to have an archived link for that thread?
I am unable to find the thread by simply searching the title, on the Google Groups (CSSM archive)
Bruno Luong
Bruno Luong 2023 年 2 月 1 日

サインインしてコメントする。

その他の回答 (3 件)

Lucas García
Lucas García 2011 年 9 月 20 日
You can use the subspace function to find the angle between two subspaces:
>> subspace([1;0;0],[0;1;0])
ans =
1.5708
  1 件のコメント
Yadu Bhusal
Yadu Bhusal 2021 年 8 月 5 日
I have 3 points in a line( suppose) and one calculations point separately. A(1,1,1)B(2,2,2)C(3 3 3) in a line and P( 5 5 5) as separate. I want to calculate angle A which is subtended by distance AP. And similar for BP,CP. Is it possible to find angles or make program to calculate these angles at once?

サインインしてコメントする。


David Young
David Young 2011 年 9 月 20 日
acos(dot(v1, v2) / (norm(v1) * norm(v2)))
EDIT: Having seen Jan Simon's reply, and the long thread at CSSM that he refers to, I realise that the formula I proposed is not a particularly good one. The two methods in Jan's reply are both likely to be preferable.
  2 件のコメント
developer
developer 2011 年 9 月 20 日
Thanks actually i have seen the post referred by Jan simon
and confused that what is the difference between
angle = atan2(norm(cross(a,b)), dot(a,b))
and
acos(dot(v1, v2) / (norm(v1) * norm(v2)))
Jan
Jan 2011 年 9 月 20 日
Mathematically identical, but numerically more stable, when the vectors have very different lengths:
acos(dot(v1 / norm(v1), v2 / norm(v2)))

サインインしてコメントする。


rashi
rashi 2018 年 6 月 15 日
hi I want to find the angle in azimuth and elevation plane between wo vectors in 3d. please help

カテゴリ

Help Center および File ExchangeSparse Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by