Calculate the angle between multiple points
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a matrix A contain x values in the first column and y values in the second column. I want to calculate the angle between vectors.
1 commentaire
Réponse acceptée
Jan
le 13 Juin 2013
The ACOS and the corresponding ASIN approchs are numerically instable near to multiples of pi (half). Better use the more accurate ATAN2 method:
angle = atan2(norm(cross(v1,v2)), dot(v1,v2));
4 commentaires
Stephen Devlin
le 16 Mar 2018
Hi, I have no idea if anyone will see this comment as it is years after the original post, but mathematically what is this expression:
"angle = atan2(abs(det([v1;v2])),dot(v1,v2));"
Jess Smith
le 3 Déc 2018
@stephen thats basically doing the inverse tangent of the cross product of 2D vectors over the dot product of those vectors, giving you the angle; cross product of a x b is |a||b|sin(theta) and dot product is |a||b|cos(theta) so dividing them by each other and taking inverse tan is the angle
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!