2
Stabilny numerycznie sposób obliczania kątów między wektorami
Podczas stosowania klasycznej formuły kąta między dwoma wektorami: α=arccosv1⋅v2∥v1∥∥v2∥α=arccosv1⋅v2‖v1‖‖v2‖\alpha = \arccos \frac{\mathbf{v_1} \cdot \mathbf{v_2}}{\|\mathbf{v_1}\| \|\mathbf{v_2}\|} stwierdzono, że dla bardzo małych / ostrych kątów występuje utrata precyzji, a wynik nie jest dokładny. Jak wyjaśniono w tej odpowiedzi Przepełnienie stosu , jednym rozwiązaniem jest użycie arcus tangens zamiast: α=arctan2(∥v1×v2∥,v1⋅v2)α=arctan2(‖v1×v2‖,v1⋅v2)\alpha = \arctan2 \left(\|\mathbf{v_1} …