From 18fa2868964f9b5f48628837a4630220ded8fa81 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 23 Jan 2021 21:33:59 +0300 Subject: [PATCH] Add simplex comparison operators --- libs/geom/include/psemek/geom/simplex.hpp | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/libs/geom/include/psemek/geom/simplex.hpp b/libs/geom/include/psemek/geom/simplex.hpp index eafb48f5..072b0f07 100644 --- a/libs/geom/include/psemek/geom/simplex.hpp +++ b/libs/geom/include/psemek/geom/simplex.hpp @@ -4,6 +4,7 @@ #include #include +#include namespace psemek::geom { @@ -35,6 +36,42 @@ namespace psemek::geom template using triangle = simplex; + template + bool operator == (simplex const & s1, simplex const & s2) + { + return std::equal(s1.points, s1.points + K + 1, s2.points); + } + + template + bool operator != (simplex const & s1, simplex const & s2) + { + return !(s1 == s2); + } + + template + bool operator < (simplex const & s1, simplex const & s2) + { + return std::lexicographical_compare(s1.points, s1.points + K + 1, s2.points, s2.points + K + 1); + } + + template + bool operator > (simplex const & s1, simplex const & s2) + { + return s2 < s1; + } + + template + bool operator <= (simplex const & s1, simplex const & s2) + { + return !(s2 < s1); + } + + template + bool operator >= (simplex const & s1, simplex const & s2) + { + return !(s1 < s2); + } + template std::ostream & operator << (std::ostream & os, simplex const & s) {