2
Численно устойчивый способ вычисления углов между векторами
При применении классической формулы для угла между двумя векторами: α=arccosv1⋅v2∥v1∥∥v2∥α=arccosv1⋅v2‖v1‖‖v2‖\alpha = \arccos \frac{\mathbf{v_1} \cdot \mathbf{v_2}}{\|\mathbf{v_1}\| \|\mathbf{v_2}\|} обнаруживается, что при очень малых / острых углах наблюдается потеря точности, и результат не является точным. Как объясняется в ответе на переполнение стека , одно из решений - использовать вместо этого арктангенс: α=arctan2(∥v1×v2∥,v1⋅v2)α=arctan2(‖v1×v2‖,v1⋅v2)\alpha = …