1. 实验目的:
了解曲线的生成原理,掌握几种常见的曲线生成算法,利用VC+OpenGL实现Bezier曲线生成算法。
2. 实验内容:
(1) 结合示范代码理解曲线生成原理与算法实现,尤其是Bezier曲线;
(2) 用Bezier曲线定义(参考教材P195页函数BezierCurve)或de Casteljau算法(参考教材P197页函数Casteljau)实现曲线绘制函数bezier。教材上绘制的Bezier曲线是三次的,实验中要求是n次(如果最终选择了n+1个控制点)。
Bezier曲线:Bezier曲线是通过一组多边形折线(称为控制多边形)的顶点(称为控制点)来定义的。如果控制点固定不变,则由其定义的Bezier曲线是唯一的。在所有控制点中,只有第一点和最后一点在曲线上且作为曲线的起始处和终止处,其他的点用于控制曲线的形状及阶次。曲线的形状趋向于多边形折线的形状,要修改曲线,只要修改折线的各顶点就可以了。
Bezier曲线绘制思路:绘制时通过设定参数t的间隔,如t=0.0, 0.01, 0.02, …, 0.99, 1.0,计算出每个t时的曲线上点的坐标,然后以该点及该点的前一点为直线的两头端点画某种颜色(如红色)直线段即可,画直线段可以用BresLine函数。
Bezier曲线绘制过程:利用键盘和鼠标在屏幕上画出一条Bezier曲线(注:空格键选择控制点,'m’结束控制点的选择,控制点不能超过个30),如下图所示:
附录: Source Code(in C)
链接: 二维曲线绘制实验.rar
(代码仅供参考)
没有币的同学来Gitee吧!记得留下Star噢~
Jack-lllll 的Gitee仓库