Angle Between two vectors.
49 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Andrew Bass
el 11 de Abr. de 2020
Respondida: James Tursa
el 12 de Abr. de 2020
How could I create a function that will take two vectors as inputs, and outputs the angle between them in radians.
0 comentarios
Respuesta aceptada
Jim Riggs
el 11 de Abr. de 2020
Editada: Jim Riggs
el 11 de Abr. de 2020
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);
return
end
Más respuestas (1)
James Tursa
el 12 de Abr. de 2020
This has been discussed many times on this forum. Robust methods are found here:
And a full circle method can be found here:
0 comentarios
Ver también
Categorías
Más información sobre Graphics Objects en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!