给我用c语言写一个三此bezier曲线,要求可以控制每个顶点
时间: 2023-05-21 15:06:25 浏览: 130
非常感谢您的提问!以下是使用 C 语言编写三次 Bezier 曲线的代码示例,您可以在其中添加控制点以控制曲线。
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define STEPS 1000 // 每条曲线的步数
typedef struct {
double x; // x 坐标
double y; // y 坐标
} point;
// 计算贝塞尔曲线上的点
point bezier_point(double t, point* p) {
double x = (1 - t) * (1 - t) * p[0].x + 2 * t * (1 - t) * p[1].x + t * t * p[2].x;
double y = (1 - t) * (1 - t) * p[0].y + 2 * t * (1 - t) * p[1].y + t * t * p[2].y;
point pt = {x, y};
return pt;
}
// 绘制贝塞尔曲线
void draw_bezier(point* p) {
int i;
point pt;
// 计算并绘制每个步骤上的点
for (i = 0; i <= STEPS; i++) {
double t = i / (double)STEPS;
pt = bezier_point(t, p);
printf("%d, %d\n", (int)pt.x, (int)pt.y);
}
}
int main() {
point p[3];
int i;
// 设置三个控制点
p[0].x = 10;
p[0].y = 50;
p[1].x = 90;
p[1].y = 200;
p[2].x = 200;
p[2].y = 100;
// 绘制三次 Bezier 曲线
draw_bezier(p);
return 0;
}
```
希望这能帮到您!