Hay varias respuestas aquí con un error de signo, por lo que esta corrige la respuesta más votada y agrega un ejemplo que muestra por qué la corrección obtiene la respuesta correcta. Agregué un comentario pero SE lo está ocultando, así que siento que una respuesta es importante para asegurar que la gente no se equivoque (pasé horas depurando código escrito basado en esta respuesta)
Respuesta corregida:
La pregunta pide el ángulo A\rightarrow B \rightarrow C, lo cual interpreto como el ángulo donde B es el vértice. Por lo tanto, reformulando la pregunta, queremos el ángulo entre el vector de B a A, es decir \vec{BA} y el vector de B a C, es decir \vec{BC}.
\begin{array}{ccc} \vec{BA} & = & A-B \\ \vec{BC} & = & C - B \end{array}
El producto escalar (también llamado producto punto) tiene la propiedad de que
\vec{BA} \cdot \vec{BC} = \|\vec{BA}\| \, \|\vec{BC}\| \, \cos\theta
donde \| * \| mide la longitud y \theta es el ángulo entre los dos vectores.
Si tienes A, B y C entonces puedes calcular \vec{BA} y \vec{BC}. Con eso, encuentra el producto punto \vec{BA}\cdot \vec{BC} y las longitudes \|\vec{BA}\| y \|\vec{BC}\|. Luego sustituye para encontrar \theta, donde
\theta = \arccos \left( \frac{\vec{BA}\cdot \vec{BC}}{ \|\vec{BA}\| \, \|\vec{BC}\|}\right).
Todo lo que hice en el último paso fue reorganizar la fórmula para resolver por \theta.
Ejemplo trabajado:
- A= (1,1,0)
- B= (0,0,0)
- C= (0,1,0)
Esto obviamente forma un triángulo rectángulo equilátero con catetos de 1 y una hipotenusa de \sqrt2 y la mayoría de la gente estará instantáneamente consciente de que la respuesta correcta es 45 grados (\pi/4 radianes ~ 0.785) \begin{array}{ccc} \vec{BA} & = & A-B & = & (1,1,0) \\ \vec{BC} & = & C - B & = & (0,1,0) \end{array}
\|\vec{BA}\| = \sqrt2 \|\vec{BC}\| = 1 \vec{BA} \cdot \vec{BC} = (0\times1) +(1\times1)+(0\times0) = 0 + 1 + 0 = 1 \theta = \arccos{(1/(1\times\sqrt2)) = \arccos(1/\sqrt2) = 45 } si elegimos escribir la respuesta en grados, por supuesto.
Respuestas incorrectas anteriores utilizan:
\begin{array}{ccc} \vec{AB} & = & B - A & = & (-1,-1,0) \\ \vec{BC} & = & C - B & = & (0,1,0) \end{array}
Lo cual cambia el signo del producto punto: \vec{AB} \cdot \vec{BC} = (0\times-1) +(1\times-1)+(0\times0) = (0) + (-1) + (0) = -1 Y conduce a \theta = \arccos{(-1/(1\times\sqrt2)) = \arccos(-1/\sqrt2) = 135 }
No hay ningún ángulo entre ninguno de los 3 puntos que pueda describirse como 135 grados.
Como nota al margen, las otras respuestas parecen dar un valor correcto para el "cambio de dirección" o necesario para viajar con éxito a C después de viajar a A desde B, lo cual podría ser útil si quisieras conducir un robot a lo largo de un polígono, pero no veo cómo uno llegaría a esa noción desde la pregunta.