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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

} 运行效果如下: 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); } 运行效果如下:
蓝色画笔 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);
3、以上是本次实验的基本部分,能不能利用该算法,完成任意阶次 Bezier曲线的生成,请同学们认真考虑,完成这部分的内容,并将具体 的实现过程撰写在实验报告上。 五、思考 1、如何实现任意阶次Bezier曲线的生成;
2、 如何利用Bezier曲线来实现任意复杂形状曲线的生成。
六、实验总结
湖北汽车工业学院实验报告
班 级 课程名称 学 号 完成日期 姓 名
实验四 实现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的
相关文档
最新文档