diff --git a/libs/geom/include/psemek/geom/vector.hpp b/libs/geom/include/psemek/geom/vector.hpp index ddd56b8f..dad2899a 100644 --- a/libs/geom/include/psemek/geom/vector.hpp +++ b/libs/geom/include/psemek/geom/vector.hpp @@ -328,10 +328,16 @@ namespace psemek::geom return std::atan2(v[1], v[0]); } + template + T angle(vector const & v0, vector const & v1) + { + return std::atan2(det(v0, v1), dot(v0, v1)); + } + template T angle(vector const & v0, vector const & v1) { - return std::atan2(det(v0, v1), dot(v0, v1)); + return std::acos(std::min(T{1}, std::max(T{-1}, dot(v0, v1)))); } template