Sparkle 0.0.1
Loading...
Searching...
No Matches
spk_polygon.hpp
1#pragma once
2
3#include <vector>
4
5namespace spk
6{
7 enum class PolygonOrder
8 {
9 TriangleFanFromFirst,
10 TriangleStrip
11 };
12
22 template <typename TVertex>
23 struct IPolygon
24 {
28 using Order = PolygonOrder;
29
33 PolygonOrder order = PolygonOrder::TriangleFanFromFirst;
37 std::vector<TVertex> points;
38
46 static IPolygon<TVertex> makeTriangle(const TVertex &p_a, const TVertex &p_b, const TVertex &p_c)
47 {
48 return {.order = PolygonOrder::TriangleFanFromFirst, .points = {p_a, p_b, p_c}};
49 }
50
60 static IPolygon<TVertex> makeQuad(const TVertex &p_a, const TVertex &p_b, const TVertex &p_c, const TVertex &p_d, const PolygonOrder p_order = PolygonOrder::TriangleFanFromFirst)
61 {
62 return {.order = p_order, .points = {p_a, p_b, p_c, p_d}};
63 }
64 };
65}
Stores vertex points and winding order for polygon triangulation.
Definition spk_polygon.hpp:24
PolygonOrder Order
Alias for polygon ordering enumeration.
Definition spk_polygon.hpp:28
std::vector< TVertex > points
Polygon vertex points.
Definition spk_polygon.hpp:37
static IPolygon< TVertex > makeTriangle(const TVertex &p_a, const TVertex &p_b, const TVertex &p_c)
Creates a triangle polygon.
Definition spk_polygon.hpp:46
static IPolygon< TVertex > makeQuad(const TVertex &p_a, const TVertex &p_b, const TVertex &p_c, const TVertex &p_d, const PolygonOrder p_order=PolygonOrder::TriangleFanFromFirst)
Creates a quad polygon.
Definition spk_polygon.hpp:60
PolygonOrder order
Polygon triangulation order.
Definition spk_polygon.hpp:33