src/ldrawalgorithm.h

changeset 250
2837b549e616
parent 232
8efa3a33172e
child 261
6a875faebde2
equal deleted inserted replaced
249:37d3c819cafa 250:2837b549e616
17 17
18 /* 18 /*
19 void makeUnofficial(ModelEditor &editor); 19 void makeUnofficial(ModelEditor &editor);
20 */ 20 */
21 21
22 constexpr float circleAngle(int divisions, int i) 22 constexpr float circleAngle(unsigned int divisions, unsigned int i)
23 { 23 {
24 constexpr float ofs = 0.5 * pi<>; 24 constexpr float ofs = 0.5 * pi<>;
25 float factor = -2.0f * pi<> / divisions; 25 float factor = -2.0f * pi<> / static_cast<float>(divisions);
26 return i * factor + ofs; 26 return static_cast<float>(i) * factor + ofs;
27 } 27 }
28 28
29 constexpr glm::vec2 rimpoint(int divisions, int i) 29 constexpr glm::vec2 rimpoint(unsigned int divisions, unsigned int i)
30 { 30 {
31 const float angle = circleAngle(divisions, i); 31 const float angle = circleAngle(divisions, i);
32 return glm::vec2{std::sin(angle), std::cos(angle)}; 32 return glm::vec2{std::sin(angle), std::cos(angle)};
33 } 33 }
34 34
35 template<typename Fn> 35 template<typename Fn>
36 void circleAngles(int segments, int divisions, Fn&& fn) 36 void circleAngles(unsigned int segments, unsigned int divisions, Fn&& fn)
37 { 37 {
38 for (int i = 0; i < segments; i += 1) 38 for (unsigned int i = 0; i < segments; i += 1)
39 { 39 {
40 const float a1 = circleAngle(divisions, i - 1); 40 const float a1 = circleAngle(divisions, i - 1);
41 const float a2 = circleAngle(divisions, i); 41 const float a2 = circleAngle(divisions, i);
42 const float a3 = circleAngle(divisions, i + 1); 42 const float a3 = circleAngle(divisions, i + 1);
43 fn(a1, a2, a3); 43 fn(a1, a2, a3);
44 } 44 }
45 } 45 }
46 46
47 template<typename Fn> 47 template<typename Fn>
48 void circle(int segments, int divisions, Fn&& fn) 48 void circle(unsigned int segments, unsigned int divisions, Fn&& fn)
49 { 49 {
50 circleAngles(segments, divisions, [&fn]( 50 circleAngles(segments, divisions, [&fn](
51 const float a1, 51 const float a1,
52 const float a2, 52 const float a2,
53 const float a3 53 const float a3

mercurial