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 |