计算机图形学mfc构造beizer曲线教程,计算机图形学实验报告-实验3Bezier曲线

《计算机图形学实验报告-实验3Bezier曲线》由会员分享,可在线阅读,更多相关《计算机图形学实验报告-实验3Bezier曲线(4页珍藏版)》请在人人文库网上搜索。

1、计算机图形学实验报告班级 计算机工硕班 学号 姓名 王泽晶 实验三:Bezier曲线实验目的:通过本次试验,学生可以掌握Bezier 曲线的求值、升阶算法及Bezier曲线绘制方法。实验内容:1. 绘制控制多边形(使用鼠标左键指定多边形顶点,右键结束),使用白色折线段表示。2. 绘制Bezier曲线,使用红色,线宽为2,在右键结束控制多边形顶点指定时即执行。Bezier曲线是一种广泛应用于外形设计的参数曲线,它通过对一些特定点的控制来控制曲线的形状,我们称这些点为控制顶点。现在我们来给出Bezier曲线的数学表达式。在空间给定个点,称下列参数曲线为次Bezier曲线:其中是Bernstein基。

2、函数,其表达式为:,接着我们讨论3次Bezier曲线,我们也采用将表达式改写为矩阵形式的方法,我们得到:试验步骤:添加成员函数,编写成员数代码为public class Al_deCasteljaupublic function Al_deCasteljau()/ de Casteljau递推算法的实现public function recursion( ctrlPts:Array, k:int , i:int ,t:Number ):Pointif ( k=0 ) return ctrlPtsi;return addPoints(multiplyNumToPoint(1 - t),recur。

3、sion(ctrlPts, k-1, i, t),multiplyNumToPoint(t , recursion(ctrlPts, k-1, i+1, t);public function multiplyNumToPoint(n:Number,p:Point):Pointreturn new Point(p.x * n,p.y * n);public function addPoints(p1:Point,p2:Point):Pointreturn new Point(p1.x + p2.x,p1.y + p2.y);public function minusPoints(p1:Point。

4、,p2:Point):Pointreturn new Point(p1.x - p2.x,p1.y - p2.y);public function algorithm_deCasteljau(t:Number, ctrlPts:Array ):Pointvar size:int = ctrlPts.length;return recursion( ctrlPts, size-1, 0, t );public function upgradePoints(ctrlPts:Array):Arrayvar size:int = ctrlPts.length;var newPts:Array = ne。

5、w Array();newPts0 = ctrlPts0; / i = 0for ( var i:int =1; isize; +i )var factor:Number = i / size;newPtsi = addPoints(multiplyNumToPoint( factor , ctrlPtsi-1 ) , multiplyNumToPoint(1 - factor) , ctrlPtsi);newPtssize = ctrlPtsctrlPts.length-1; / i = n+1return newPts;public function downgradePoints(ctr。

6、lPts:Array):Arrayvar size:int = ctrlPts.length;var newPts:Array = new Array();newPts0 = ctrlPts0; / i = 0for ( var i:int=1; isize-1; +i )var factor:Number = 1.0 /(size-1 - i);newPtsi = multiplyNumToPoint(factor, minusPoints(multiplyNumToPoint(size-1 , ctrlPtsi) , multiplyNumToPoint(i , newPtsi-1);return newPts;编译运行得到如下结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值