How can I find the angle between two vectors that answer should be between 0 to 2*pi

조회 수: 53 (최근 30일)
We have two points on a circle in 3D space, as well as the center point. How can we calculate the angle between the vector from the center to point one and the vector from the center to point two, with the calculation starting from vector one counter-clockwise to vector two? In other words, the angle should be calculated such that if our first vector is from (0,0,0) to (0,-1,0) and the second vector is from (0,0,0) to (0,0,-1), the angle should be 270 degrees or 3*pi/2, not 90 degrees.

채택된 답변

Bjorn Gustavsson
Bjorn Gustavsson 2023년 3월 31일
This question has been answered several times:
angle-betwen-two-3d-vectors-in-the-range-0-360-degree, angle-between-two-vectors-in-matlab. But you should also have a think about why your question isn't sufficiently well stated - what's the positive direction for your angle and why do you chose that direction?
HTH
  댓글 수: 9
James Tursa
James Tursa 2023년 3월 31일
편집: James Tursa 2023년 3월 31일
You still need an independent indicator to define what counter-clockwise means. Otherwise the 0-360 result doesn't make sense. E.g., you can't just pick cross(v1,v2) as this direction since it is not independent. You would always get +90 degrees for the hand example regardless of the hand orientation if you did that. You could pick the initial cross(v1,v2) as the indicator if you had streams of v1's and v2's. That would make sense. But you can't redefine the indicator on the fly this way.
Torsten
Torsten 2023년 3월 31일
You are right: keeping counterclockwise, the angle changes from 90 to 270 degrees depending on whether you look from above or from below the plane the circle is in.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Luca Ferro
Luca Ferro 2023년 3월 31일
편집: Luca Ferro 2023년 3월 31일
As suggested there you can trya variation like this:
angle=180*atan2(norm(cross(a,b)), dot(a,b))
where a,b are your vectors.

카테고리

Help CenterFile Exchange에서 Language Fundamentals에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by