Angle Between two vectors.

조회 수: 31(최근 30일)
Andrew Bass
Andrew Bass 2020년 4월 11일
답변: James Tursa 2020년 4월 12일
How could I create a function that will take two vectors as inputs, and outputs the angle between them in radians.

채택된 답변

Jim Riggs
Jim Riggs 2020년 4월 11일
편집: Jim Riggs 2020년 4월 11일
Given two vectors A and B, the dot product of the two vectors (A dot B) gives the product ABcos(ang), so to get just the angle, you want to take the dot product of two unit vectors;
Assume A = [ax, ay, az], B = [bx, by, bz]
magA = sqrt(ax^2+ay^2+az^2); % = sqrt(A(1)^2 + A(2)^2 + A(3)^2)
magB = sqrt(bx^2+by^2+bz^2); % = sqrt(B(1)^2 + B(2)^2 + B(3)^2)
UA = [ax/magA, ay/magA, az/magA]; % A unit vector, = [A(1)/magA, A(2)/magA, A(3)/magA]
UB = [bx/magB, by/magB, bz/magB]; % B unit vector, = [B(1)/magB, B(2)/magB, B(3)/magB]
cosAng = dot(UA,UB); % = UA(1)*UB(1) + UA(2)*UB(2) + UA(3)*UB(3)
ang = acos(cosang); % This is the angle between vector A and Vector B, in radians
As a function;
function ang = Vangle(A,B)
magA = sqrt(A(1)^2 + A(2)^2 + A(3)^2);
magB = sqrt(B(1)^2 + B(2)^2 + B(3)^2);
UA = [A(1)/magA, A(2)/magA, A(3)/magA]
UB = [B(1)/magB, B(2)/magB, B(3)/magB]
cosAng = UA(1)*UB(1) + UA(2)*UB(2) + UA(3)*UB(3);
ang = acos(cosang);
  댓글 수: 1
Andrew Bass
Andrew Bass 2020년 4월 12일
thank you! this was very helpful

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

추가 답변(1개)

James Tursa
James Tursa 2020년 4월 12일


Community Treasure Hunt

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

Start Hunting!

Translated by