src/geometry.h

changeset 55
cb81ecb5fb23
child 58
b7841cd31fb7
equal deleted inserted replaced
54:a4055f67b9c7 55:cb81ecb5fb23
1 #pragma once
2 #include "basics.h"
3
4 namespace geom
5 {
6 struct Plane
7 {
8 glm::vec3 normal;
9 glm::vec3 anchor;
10 };
11
12 struct Line
13 {
14 glm::vec3 direction;
15 glm::vec3 anchor;
16 };
17
18 template<int N>
19 struct Polygon
20 {
21 glm::vec3 points[N];
22 };
23
24 inline const glm::vec3 origin = {0, 0, 0};
25 inline const Plane XY = {{0, 0, 1}, origin};
26 inline const Plane XZ = {{0, 1, 0}, origin};
27 inline const Plane YZ = {{1, 0, 0}, origin};
28 using Triangle = Polygon<3>;
29
30 Line lineFromPoints(const glm::vec3& point_1, const glm::vec3 point_2);
31 Plane planeFromTriangle(const Triangle& triangle);
32 glm::vec3 normalVector(const Triangle& triangle);
33 std::optional<glm::vec3> linePlaneIntersection(const Line& line, const Plane& plane);
34 }

mercurial