请写出用贝塞尔曲线算法来平滑多边形的c++代码
时间: 2023-03-09 15:05:08 浏览: 91
besaier.rar_QT 平滑_c++ curve_qt besaier_曲线平滑_贝塞尔
答:以下是使用贝塞尔曲线算法来平滑多边形的C语言代码:#include<stdio.h>
#include<math.h>int main(){
int n;
printf("请输入多边形的边数n:");
scanf("%d",&n);
double points[n][2];
double x, y;
int i;
for(i=0;i<n;i++){
printf("请输入第%d个点的横坐标和纵坐标:",i+1);
scanf("%lf %lf",&x, &y);
points[i][0]=x;
points[i][1]=y;
}
double t,x0,y0,x1,y1,x2,y2,x3,y3;
for(t=0;t<1;t+=0.1){
for(i=0;i<n;i++){
x0=points[(i-1+n)%n][0];
y0=points[(i-1+n)%n][1];
x1=points[i][0];
y1=points[i][1];
x2=points[(i+1)%n][0];
y2=points[(i+1)%n][1];
x3=points[(i+2)%n][0];
y3=points[(i+2)%n][1];
double x = (1-t)*(1-t)*(1-t)*x0 + 3*(1-t)*(1-t)*t*x1 + 3*(1-t)*t*t*x2 + t*t*t*x3;
double y = (1-t)*(1-t)*(1-t)*y0 + 3*(1-t)*(1-t)*t*y1 + 3*(1-t)*t*t*y2 + t*t*t*y3;
printf("(%lf, %lf)\n",x,y);
}
}
return 0;
}
阅读全文