bezier曲线代码实现c++
时间: 2023-11-23 10:06:12 浏览: 263
Bezier 曲线c++实现
4星 · 用户满意度95%
好的,关于bezier曲线的代码实现,以下是一个简单的示例:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 计算组合数C(n, i)
int binomialCoeff(int n, int i) {
int res = 1;
for (int j = 1; j <= i; ++j) {
res *= n - j + 1;
res /= j;
}
return res;
}
// 计算Bezier曲线上的点
void bezierCurve(vector<pair<int, int>>& points, vector<pair<int, int>>& curvePoints) {
int n = points.size() - 1;
for (double t = 0; t <= 1; t += 0.01) {
int x = 0, y = 0;
for (int i = 0; i <= n; ++i) {
int coeff = binomialCoeff(n, i);
double factor = coeff * pow(t, i) * pow(1 - t, n - i);
x += factor * points[i].first;
y += factor * points[i].second;
}
curvePoints.push_back({x, y});
}
}
int main() {
vector<pair<int, int>> points = {{100, 100}, {200, 300}, {400, 50}, {500, 200}};
vector<pair<int, int>> curvePoints;
bezierCurve(points, curvePoints);
for (auto& p : curvePoints) {
cout << "(" << p.first << ", " << p.second << ")" << endl;
}
return 0;
}
```
这个示例中,我们定义了一个 `bezierCurve` 函数,它接受一个点集 `points` 和一个空的曲线点集 `curvePoints`,并计算出Bezier曲线上的所有点,存储在 `curvePoints` 中。其中,`binomialCoeff` 函数用于计算组合数,`pow` 函数用于计算幂次方。
阅读全文