Remove unused vars
[opengl.git] / shapes.hpp
1 #include <array>
2 #define GLM_FORCE_PURE
3 #include <glm/glm.hpp>
4
5 using namespace std;
6
7 constexpr array<glm::vec3, 6> quadToTriangles(const array<glm::vec3, 4> quads) {
8         return {
9                 quads[0],
10                 quads[1],
11                 quads[2],
12                 quads[2],
13                 quads[3],
14                 quads[0]
15         };
16 }
17
18 constexpr array<glm::vec3, 6> plane() {
19         return quadToTriangles({
20                 glm::vec3(1, 1, 0),
21                 glm::vec3(-1, 1, 0),
22                 glm::vec3(-1, -1, 0),
23                 glm::vec3(1, -1, 0)
24         });
25 }
26
27 constexpr array<glm::vec3, 36> cube() {
28         int i = 0;
29         array<glm::vec3, 36> vertices;
30         
31         const array<glm::vec3, 4> front = {
32                 glm::vec3(1, -1, -1),
33                 glm::vec3(-1, -1, -1),
34                 glm::vec3(-1, 1, -1),
35                 glm::vec3(1, 1, -1)
36         };
37         
38         for (auto v: quadToTriangles(front))
39                 vertices[i++] = v;
40
41         const array<glm::vec3, 4> back = {
42                 glm::vec3(1, 1, 1),
43                 glm::vec3(-1, 1, 1),
44                 glm::vec3(-1, -1, 1),
45                 glm::vec3(1, -1, 1)
46         };
47         for (auto v: quadToTriangles(back))
48                 vertices[i++] = v;
49
50
51         const array<glm::vec3, 4> top = {
52                 glm::vec3(1, 1, -1),
53                 glm::vec3(-1, 1, -1),
54                 glm::vec3(-1, 1, 1),
55                 glm::vec3(1, 1, 1)
56         };
57         for (auto v: quadToTriangles(top))
58                 vertices[i++] = v;
59
60         const array<glm::vec3, 4> bottom = {
61                 glm::vec3(1, -1, 1),
62                 glm::vec3(-1, -1, 1),
63                 glm::vec3(-1, -1, -1),
64                 glm::vec3(1, -1, -1)
65         };
66         for (auto v: quadToTriangles(bottom))
67                 vertices[i++] = v;
68
69         const array<glm::vec3, 4> left = {
70                 glm::vec3(-1, 1, 1),
71                 glm::vec3(-1, 1, -1),
72                 glm::vec3(-1, -1, -1),
73                 glm::vec3(-1, -1, 1)
74         };
75         for (auto v: quadToTriangles(left))
76                 vertices[i++] = v;
77
78         const array<glm::vec3, 4> right = {
79                 glm::vec3(1, 1, -1),
80                 glm::vec3(1, 1, 1),
81                 glm::vec3(1, -1, 1),
82                 glm::vec3(1, -1, -1)
83         };
84         for (auto v: quadToTriangles(right))
85                 vertices[i++] = v;
86
87         return vertices;
88 }