计算机图形学——绘制bezier曲线

计算机图形学——绘制bezier曲线

ID:36243298

大小:60.00 KB

页数:5页

时间:2019-05-07

计算机图形学——绘制bezier曲线_第1页
计算机图形学——绘制bezier曲线_第2页
计算机图形学——绘制bezier曲线_第3页
计算机图形学——绘制bezier曲线_第4页
计算机图形学——绘制bezier曲线_第5页
资源描述:

《计算机图形学——绘制bezier曲线》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、计算机图形学实验报告专业:信息与计算科学班级:1002班学号:1008060***姓名:****实验目的:(1)掌握直线的参数表示法。(2)掌握德卡斯特里奥算法的几何意义。(3)掌握绘制二维Bezier曲线的方法。实验要求:(1)使用鼠标左键绘制个数为10以内的任意控制点,使用直线连接构成控制多边形。(2)使用鼠标右键绘制Bezier曲线。(3)在状态栏显示鼠标的位置坐标。(4)Bezier曲线使用德卡斯特里奥算法绘制。实验算法:Bezier曲线的分割递推德卡斯特里奥算法给定空间n+1个点Pi(i=0,1,2,…,n)及参数

2、t,有(t)=(1-t)(t)+t(t)式中,r=1,2,…,n;i=0,1,…,n-r;t∈[0,1]。且规定当r=0时,(t)=,(t)是在曲线上具有参数t的点。德卡斯特里奥算法的基础就是在矢量上选择一个点P,使得P点划分矢量为

3、

4、:

5、

6、=t:1-t,给定点P0、P1的坐标以及t的值,点P的坐标为P=P0+t(P1-P0)=(1-t)P0+tP1。式中,t∈[0,1]。定义贝塞尔曲线的控制点编号为,其中,r表示迭代次数。德卡斯特里奥证明了,当r=n时,表示Bezier曲线上的点。函数功能介绍1.德卡斯特里奥函数:long

7、CMy12View::DeCasteliau(doublet,long*p){doubleP[N_MAX_POINT][N_MAX_POINT];intn=CtrlPNum-1;for(intk=0;k<=n;k++){P[0][k]=p[k];}for(intr=1;r<=n;r++){for(inti=0;i<=n-r;i++){P[r][i]=(1-t)*P[r-1][i]+t*P[r-1][i+1];}}return(long(P[n][0]));}函数功能介绍:此函数为德卡斯特里奥算法函数。在绘制Bezier曲线时

8、,需调用两次此函数,分别关于x方向和y方向上的调用。由DrawBezier()函数调用。2.voidCMy12View::DrawBezier()函数功能介绍:此函数为绘制Bezier曲线。绘制二维Bezier曲线,需要对x方向和y方向进行计算。这个函数就是解决这个问题,然后通过OnRButtonDown(UINTnFlags,CPointpoint)调用进行绘制。3.voidCMy12View::DrawCtrPolygon()函数功能介绍:此函数为绘制控制多边形。定义一个CPen型NewPen,和CPen*型PoldPe

9、n,进行绘制多边形,为了突出控制点,使用黑色填充边长为4个像素的正方形块代表控制点。4.voidCMy12View::OnLButtonDown(UINTnFlags,CPointpoint)函数功能介绍:此函数为鼠标左键按下函数。按下鼠标左键,将鼠标位置点作为控制点,并调用CMy12View::DrawCtrPolygon()函数绘制控制多边形5.voidCMy12View::OnRButtonDown(UINTnFlags,CPointpoint)函数功能介绍:此函数为鼠标右键按下函数。通过一个BOOL型的变量,控制多边

10、形的绘制,由鼠标右键绘制Bezier曲线。实验结果:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。