src/ldrawalgorithm.h

changeset 200
ca23936b455b
parent 196
6bcb284679d4
child 206
654661eab7f3
equal deleted inserted replaced
199:6988973515d2 200:ca23936b455b
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;
32 glm::vec2{std::sin((i + 1) * factor), std::cos((i - 1) * factor)} 31 glm::vec2{std::sin((i + 1) * factor), std::cos((i - 1) * factor)}
33 ); 32 );
34 } 33 }
35 } 34 }
36 } 35 }
36
37 ModelElement inverted(const ModelElement &element);

mercurial