From d405d3d502ade94ffee85668246543ad05bbcc6f Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 5 Jul 2022 18:32:12 +0300 Subject: [PATCH] Fix geom::angle(vector,vector) for dimension > 2 --- libs/geom/include/psemek/geom/vector.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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