关键代码:
Bezier曲线:
void CalcBZPoints(){
float a0,a1,a2,a3,b0,b1,b2,b3;
a0=pt[0].x;
a1=-3*pt[0].x+3*pt[1].x;
a2=3*pt[0].x-6*pt[1].x+3*pt[2].x;
a3=-pt[0].x+3*pt[1].x-3*pt[2].x+pt[3].x;
b0=pt[0].y;
b1=-3*pt[0].y+3*pt[1].y;
b2=3*pt[0].y-6*pt[1].y+3*pt[2].y;
b3=-pt[0].y+3*pt[1].y-3*pt[2].y+pt[3].y;
float t = 0;
float dt = 0.01;
for(int i = 0; t<1.1; t+=0.1, i++){
bz[i].x = a0+a1*t+a2*t*t+a3*t*t*t;
bz[i].y = b0+b1*t+b2*t*t+b3*t*t*t;
}
}
画点函数:
void ControlPoint(vector<Point> vpt){
glPointSize(2);//点的粗细
for(int i=0; i<vpt.size(); i++){
glBegin (GL_POINTS);
glColor3f (1.0f, 1.0f, 0.5f);//控制点颜色
glVertex2i (vpt[i
用三次Beizer曲线连续做图
最新推荐文章于 2023-05-04 22:22:46 发布