Ángulo entre dos vectores 3D en C
El ángulo entre dos vectores A = (Ax, Ay, Az) y B = (Bx, By, Bz) se calcula mediante el arcocoseno de la relación que existe entre el producto escalar de dichos vectores y los módulos de cada vector. Su fórmula es la siguiente:
En programación hay varias soluciones, una es usando la función atan2. El código en C es el siguiente pero podéis cambiarlo fácilmente a cualquier otro lenguaje de programación:
#include <stdio.h>
#include <math.h>
int main()
{
double ax = 0.0, ay = 1.0, az = 0.0;
double bx = 1.0, by = 0.0, bz = 0.0;
double cross = sqrt(ax * ax + ay * ay + az * az);
double dot = ax * bx + ay * by + az * bz;
double angle = atan2(cross, dot) * 180.0 / M_PI;
printf("%lf\n", angle);
return 0;
}