您的当前位置:首页正文

Bezier曲线1

2021-10-24 来源:好走旅游网


`西安财经学院信息学院

《计算机图形学实用技术》 实验报告

实验名称 Bezier曲线 实验室 316 实验日期 12.11 实验目的:通过本次试验,学生可以掌握Bezier 曲线的求值、升阶算法及Bezier曲线绘制方法。 实验内容: 1. 绘制控制多边形(使用鼠标左键指定多边形顶点,右键结束),使用白色折线段表示。 2. 绘制Bezier曲线,使用红色,线宽为2,在右键结束控制多边形顶点指定时即执行。 姓名 白增垚 学号 1205170333 班级 计本1203 年级 2012级 指导教师 殷亚玲 Bezier曲线是一种广泛应用于外形设计的参数曲线,它通过对一些特定点的控制来控制曲线的形状,我们称这些点为控制顶点。现在我们来给出Bezier曲线的数学表达式。 0,P1,P2,在空间给定n1个点Pn,Pn,称下列参数曲线为n次Bezier曲线: P(t)PBii,n(t),0t1i0 其中Bi,n(t)是Bernstein基函数,其表达式为: Bi,n(t)n!ti(1t)nii!(ni)!,接着我们讨论3次Bezier曲线,我们也 采用将表达式改写为矩阵形式的方法,我们得到: P(t)Pii033!ti(1t)3i223(1t)3Pi!(3i)!03t(1t)P13t(1t)P2tP3 P0P32323231t3t3t1,3t6t3t,3t3t,tP2P3 第1页/共 4页

13336332t,t,t,1330100试验步骤: 添加成员函数,编写成员数代码为 public class Al_deCasteljau { public function Al_deCasteljau() { } 1P0P010P20P3 // de Casteljau递推算法的实现 public function recursion( ctrlPts:Array, k:int , i:int ,t:Number ):Point { } public function multiplyNumToPoint(n:Number,p:Point):Point{ } public function addPoints(p1:Point,p2:Point):Point{ } public function minusPoints(p1:Point,p2:Point):Point{ } public function algorithm_deCasteljau(t:Number, ctrlPts:Array ):Point { } public function upgradePoints(ctrlPts:Array):Array{ var size:int = ctrlPts.length; var newPts:Array = new Array(); newPts[0] = ctrlPts[0]; // i = 0 for ( var i:int =1; i} } { } newPts[size] = ctrlPts[ctrlPts.length-1]; // i = n+1 return newPts; var factor:Number = i / size; newPts[i] = addPoints(multiplyNumToPoint( factor , ctrlPts[i-1] ) , multiplyNumToPoint((1 - factor) , ctrlPts[i])); public function downgradePoints(ctrlPts:Array):Array{ } var size:int = ctrlPts.length; var newPts:Array = new Array(); newPts[0] = ctrlPts[0]; // i = 0 for ( var i:int=1; i第4页/共 4页

因篇幅问题不能全部显示,请点此查看更多更全内容