Чтобы использовать glm::vec3
в std::set<>
, я реализовал следующую перегрузку в type_vec3.inl :
template <typename T>
GLM_FUNC_QUALIFIER bool operator<
(
tvec3<T> const & v1,
tvec3<T> const & v2
)
{
if(v1.x == v2.x && v1.y == v2.y && v1.z < v2.z) return true;
if(v1.x == v2.x && v1.y < v2.y) return true;
if(v1.x < v2.x) return true;
return false;
}
К сожалению, я не знаю, как реализовать это без изменения кода glm.
В этой реализации ось x считается более релевантной, чем ось y, а ось y более релевантной, чем z относительно меньшей, чем. Очень просто изменить код, чтобы сделать любую другую ось более релевантной.
Оператор ==
уже реализован.