std::vector> combination(int n) { std::vector> dp(n + 1, std::vector(n + 1, 0)); for (int i = 0; i <= n; ++i) { dp[i][0] = 1; // C(n, 0) = 1 dp[i][i] = 1; // C(n, n) = 1 } for (int i = 1; i <= n; ++i) { for (int j = 1; j < i; ++j) { dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]; } } return dp; } glm::vec2 CalculateBezierPoint( std::span points, float const t) { // your code here: glm::vec2 result = glm::vec2 {0, 0}; int n = static_cast(points.size()) - 1; auto comb = combination(n); for (int i = 0; i <= n; ++i) { float coeff = static_cast(comb[n][i]) * std::pow(t, i) * std::pow(1 - t, n - i); result += coeff * points[i]; } return result; }