1 #pragma once |
1 #pragma once |
2 #include "modeleditor.h" |
2 #include "main.h" |
|
3 #include "model.h" |
3 |
4 |
4 namespace ldraw |
5 namespace ldraw |
5 { |
6 { |
6 /// Determines how quadrilaterals are split into triangles |
7 /// Determines how quadrilaterals are split into triangles |
7 enum class Diagonal |
8 enum class Diagonal |
8 { |
9 { |
9 Diagonal_13, |
10 Diagonal_13, |
10 Diagonal_24 |
11 Diagonal_24 |
11 }; |
12 }; |
12 |
13 |
13 // Splits the specified quadrilateral into triangles. |
14 std::pair<Triangle, Triangle> splitTriangles( |
14 // If it is not a quadrilateral then no action is performed |
15 const Quadrilateral& q, |
15 auto splitQuadrilateral(ModelEditor& editor, |
16 ldraw::Diagonal diagonal); |
16 quadrilateralid_t quadrilateral_id, |
|
17 Diagonal splitType = Diagonal::Diagonal_13 |
|
18 ) -> std::optional<std::pair<triangleid_t, triangleid_t>>; |
|
19 |
17 |
20 void invert(ModelEditor& editor, ldraw::id_t id, GetPolygonsContext *context); |
18 /* |
21 void makeUnofficial(ModelEditor &editor); |
19 void makeUnofficial(ModelEditor &editor); |
|
20 */ |
22 |
21 |
23 template<typename Fn> |
22 template<typename Fn> |
24 void circle(int segments, int divisions, Fn&& fn) |
23 void circle(int segments, int divisions, Fn&& fn) |
25 { |
24 { |
26 float factor = 2.0f * pi<> / divisions; |
25 float factor = 2.0f * pi<> / divisions; |