Sat, 08 Apr 2023 12:55:11 +0300
Fix BFC formatting not working due to being evaluated after comment format
#pragma once #include "src/basics.h" #include "src/model.h" namespace ldraw { /// Determines how quadrilaterals are split into triangles enum class Diagonal { Diagonal_13, Diagonal_24 }; std::pair<Triangle, Triangle> splitTriangles( const Quadrilateral& q, ldraw::Diagonal diagonal); std::vector<ModelAction> makeUnofficial(const QTextDocument *model); constexpr float circleAngle(unsigned int divisions, unsigned int i) { constexpr float ofs = 0.5 * pi; float factor = -2.0f * pi / static_cast<float>(divisions); return static_cast<float>(i) * factor + ofs; } constexpr glm::vec2 rimpoint(unsigned int divisions, unsigned int i) { const float angle = circleAngle(divisions, i); return glm::vec2{std::sin(angle), std::cos(angle)}; } template<typename Fn> void circleAngles(unsigned int segments, unsigned int divisions, Fn&& fn) { for (unsigned int i = 0; i < segments; i += 1) { const float a1 = circleAngle(divisions, i - 1); const float a2 = circleAngle(divisions, i); const float a3 = circleAngle(divisions, i + 1); fn(a1, a2, a3); } } template<typename Fn> void circle(unsigned int segments, unsigned int divisions, Fn&& fn) { circleAngles(segments, divisions, [&fn]( const float a1, const float a2, const float a3 ){ fn( glm::vec2{std::sin(a1), std::cos(a1)}, glm::vec2{std::sin(a2), std::cos(a2)}, glm::vec2{std::sin(a3), std::cos(a3)} ); }); } }