实验四 自由曲线曲面算法实验 实验项目性质:设计性实验 所属课程名称:3D游戏图形学 实验计划学时:3学时 一、 实验目的和要求 1. 了解自由曲线和曲面的生成原理; 2. 掌握并实现 Bezier 曲线和 B 样条曲线的生成算法; 3. 实现 Bezier 曲面的生成算法。 二、 实验原理 1. Bezier 曲线是通过一组多边形折线的顶点来定义的。如果折线的顶点固定不变,则由其定义的 Bezier 曲线是唯一的。在折线的各顶点中,只有第一点和最后一点在曲线上且作为曲线的起始处和终止处,其他的点用于控制曲线的形状及阶次。曲线的形状趋向于多边形折线的形状,要修改曲线,只要修改折线的各顶点就可以了。因此,多边形折线又称Bezier 曲线的控制多边形,其顶点称为控制点。 三次多项式,有四个控制点,如图1 所示, 其数学表示如下: ,300 .311 .322 .333 .30( )( )( )( )( )( )i iiQ tPBtP BtPBtP BtP Bt 图1 三次 Bezier 曲线 32230123(1)3 (1)3 (1),[0,1]t Ptt Ptt Pt P t (1) 其矩阵形式为 01322313313630( )(1),[0,1]33001000PPQ tttttPP (2) 2. B 样条曲线保留了Bezier 曲线的优点,对Bezier 曲线进行了拓广,用B 样条基代替Bernstein 基,克服了Bezier 曲线由于整体表示带来的不具备局部性质的缺点。B 样条曲线的数学定义为 0nkk,mkp(t)P B(t) (3) 式中,(0,1,, )kP kn为n+1 个控制点,由控制点顺序连成的折线称为B 样条控制多边形。m 是一个阶参数,可以取 2 到控制顶点个数 n+1 之间的任一整数,m-1 是 B 样条曲线的次数。参数 t 的选取取决于B 样条结点矢量的选取。k,mB(t)是B 样条基函数, k1,1,,11,1111 ( )0 ( )kkkk mk mk mkmk mkk mktt tBtt tttBtBtBttttt 若其它 (4) kt 是结点值,01( , ,,)n mTt tt构成了m-1 次 B 样条函数的结点矢量,其中的结点是非减序列,所生成的B 样条曲线定义在从结点值1mt 到结点值1nt 的区间上,而每个基函数定义在 t 的取值范围内的kt 到k+mt的子区间内。 从式(3)和(4)可以看出,仅仅给定控制点和参数 m 还不足以完全表达 B样条曲线,还需要给定结点矢量并使用公式(4)来获得基函数。 对于...