77范文网 - 专业文章范例文档资料分享平台

《计算机图形学》新版实验指导书(5)

来源:网络收集 时间:2018-11-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

《计算机图形学》实验指导书暨实验报告

湖北汽车工业学院实验报告

班 级 课程名称

学 号

完成日期

姓 名

实验四 实现Bezier曲线的生成算法

一、实验目的

1、熟悉CDC图形程序库;

2、掌握Bezier曲线的生成算法;

3、掌握利用Bezier曲线生成复杂形状的曲线; 二、实验性质

验证性 三、实验要求

1、认真阅读本次实验的目的,了解本次实验要求掌握的内容; 2、能够根据实验指导书的要求,完成相关的内容; 四、实验内容

(一)生成绘图应用程序的框架(如下图) 具体实现见第一次实验,过程不再详细说明。

(二)在应用程序中增加菜单

完成相关菜单的设计,具体的效果如下图所示,并设置好相关菜单消息的映射,具体的实现在前面的实验中介绍过,再此不在详细说明。

《计算机图形学》实验指导书暨实验报告

(三)在应用程序中增加一个参数设置的对话框

在VC++6.0环境中打开资源视图,插入两个对话框,如图所示(具体实现过程见实验二):

《计算机图形学》实验指导书暨实验报告

(四)在绘图函数中添加代码

通过以上步骤,得到了与菜单对应的消息映射,就可以在函数中添加代码绘制图形了。 1、利用Bezier曲线的生成算法实现二次Bezier曲线的生成(算法的详细原理见教材)。 void CBezierView::OnBezier2() { // TODO: Add your command handler code here InputBezier2Info Dlg; Dlg.DoModal(); CDC*pDC=GetDC();//得到绘图类指针 RedrawWindow();//重绘窗口

CPen bluepen(PS_SOLID,2,RGB(0,0,255));//创建画实线、线宽为2的蓝色画笔 CPen *old=pDC->SelectObject(&bluepen); float x0,y0,x1,y1,x2,y2; float i,x,y,dt,t,n=30.0; x0=Dlg.p0_x;y0=Dlg.p0_y; x1=Dlg.p1_x;y1=Dlg.p1_y; x2=Dlg.p2_x;y2=Dlg.p2_y; dt=1/n; for(i=0;i<=n;i++) { t=i*dt; x=x0*(1-t)*(1-t)+x1*2*t*(1-t)+x2*t*t; y=y0*(1-t)*(1-t)+y1*2*t*(1-t)+y2*t*t; if(i==0)pDC->MoveTo(x,y); pDC->LineTo(x,y); }

pDC->MoveTo(x0,y0); pDC->LineTo(x1,y1); pDC->LineTo(x2,y2); pDC->SelectObject(old); ReleaseDC(pDC); }

运行效果如下:

《计算机图形学》实验指导书暨实验报告

2、利用Bezier曲线的生成算法实现三次Bezier曲线的生成(算法的详细原理见教材)。。 void CBezierView::OnBezier3() { // TODO: Add your command handler code here InputBezier3Info Dlg1; Dlg1.DoModal(); CDC*pDC=GetDC();//得到绘图类指针 RedrawWindow();//重绘窗口

CPen redpen(PS_SOLID,2,RGB(255,0,0));//创建画实线、线宽为2的红色画笔 CPen *old=pDC->SelectObject(&redpen); float x0,y0,x1,y1,x2,y2,x3,y3; float i,x,y,dt,t,n=30.0; x0=Dlg1.p0_x;y0=Dlg1.p0_y; x1=Dlg1.p1_x;y1=Dlg1.p1_y; x2=Dlg1.p2_x;y2=Dlg1.p2_y; x3=Dlg1.p3_x;y3=Dlg1.p3_y; dt=1/n; for(i=0;i<=n;i++) { t=i*dt; x=x0*(1-t)*(1-t)*(1-t)+x1*3*t*(1-t)*(1-t)+x2*3*t*t*(1-t)+x3*t*t*t; y=y0*(1-t)*(1-t)*(1-t)+y1*3*t*(1-t)*(1-t)+y2*3*t*t*(1-t)+y3*t*t*t; if(i==0)pDC->MoveTo(x,y); pDC->LineTo(x,y); }

《计算机图形学》实验指导书暨实验报告

pDC->MoveTo(x0,y0); pDC->LineTo(x1,y1); pDC->LineTo(x2,y2); pDC->LineTo(x3,y3); pDC->SelectObject(old); ReleaseDC(pDC); }

运行效果如下:

3、以上是本次实验的基本部分,能不能利用该算法,完成任意阶次Bezier曲线的生成,请同学们认真考虑,完成这部分的内容,并将具体的实现过程撰写在实验报告上。 五、思考

1、如何实现任意阶次Bezier曲线的生成;

2、如何利用Bezier曲线来实现任意复杂形状曲线的生成。 六、实验总结

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《计算机图形学》新版实验指导书(5)在线全文阅读。

《计算机图形学》新版实验指导书(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/310431.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: