这是循环。基本上沿圆的圆周生成一定数量的点。点数组显然是恒定的并且可以在编译时计算,但我似乎无法找到将其提升为 constexpr 的方法。
#include <array>
#include <cmath>
template <std::size_t Len>
class Circle {
public:
Circle() {
for (int i = 0; i < Len; i++) {
float x = (float)std::cos(2 * M_PI * i / (Len - 1));
float y = (float)std::sin(2 * M_PI * i / (Len - 1));
points[i * 3] = x;
points[i * 3 + 1] = y;
points[i * 3 + 2] = 0;
}
}
private:
std::array<float, Len * 3> points;
};