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) {