Á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;
}