From a04aac5968aec814c1ebf4afc066dc9fc3b8bc49 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 7 May 2021 17:37:15 +0300 Subject: [PATCH] Add 2D convex polygon body --- libs/cg/include/psemek/cg/body/polygon.hpp | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 libs/cg/include/psemek/cg/body/polygon.hpp diff --git a/libs/cg/include/psemek/cg/body/polygon.hpp b/libs/cg/include/psemek/cg/body/polygon.hpp new file mode 100644 index 00000000..d49caf4d --- /dev/null +++ b/libs/cg/include/psemek/cg/body/polygon.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include +#include + +#include + +namespace psemek::cg +{ + + template + struct polygon + { + polygon(std::vector> vertices); + + std::vector> vertices; + std::vector> edges; + }; + + template + polygon::polygon(std::vector> vertices) + : vertices(std::move(vertices)) + { + edges.resize(vertices.size()); + for (std::size_t i = 0; i < vertices.size(); ++i) + edges[i].points = {i, (i + 1) % vertices.size()}; + } + + template + constexpr std::size_t dimension(polygon const &) + { + return 2; + } + + template + auto const & vertices(polygon const & p) + { + return p.vertices; + } + + template + auto const & edges(polygon const & p) + { + return p.edges; + } + +}