资源描述:
《直线的扫描转换.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、宁夏师范学院数学与计算机科学学院《计算机图形学》实验报告实验序号:2实验项目名称:直线的扫描转换学号姓名专业、班级实验地点指导教师时间2017-03-20一、实验目的:学会使用MFC,能够运用直线的三种扫描算法即数值微分算法(DDA算法)、中点画线算法和Bresenham画线算法绘制直线,并熟悉掌握制作过程。二、实验环境:Windows7VC++6.0三、实验内容:打开vc6.0,点击新建—>工程—>MFCAppWizard[exe],创建项目名称(随便写),确定位置,然后点击确定。选择创建的应用类型—
2、>单文档—>完成点击确定。DDA算法:添加成员函数:1.展开wdxclasses—>右击CWdxView—>选择AddMemberFuntion(添加成员函数)—>函数类型定义为void,函数描述为:DDAline—>点击确定2.展开wdxclasses—>CWdxView—>在DDAline()函数里添加形参intx0,inty0,intx1,inty1,intcolor,CClientDC&dc3.双击CWdxView,在public中添加代码:voidCWdxView::DDAline(intx0
3、,inty0,intx1,inty1,intcolor,CClientDC&dc);记住最后加分号4.展开CWdxView—>双击OnDraw—>添加代码:CClientDCdc(this);DDAline(8,12,20,25,RGB(255,145,200),dc);5.双击DDAline,在函数体内编写如下代码:并调试程序voidCWdxView::DDAline(intx0,inty0,intx1,inty1,intcolor,CClientDC&dc){CPennewpen(PS_SOLID,
4、1,color);dc.SelectObject(&newpen);intx,dx,dy,y,k;dx=x1-x0;dy=y1-y0;k=dy/dx;y=y0;for(x=x0;x<=x1;x++){dc.SetPixel(x,int(y+0.5),color);y=y+k;}}运行结果:中点画线算法:添加成员函数1.展开wdxclasses—>右击CWdxView—>选择AddMemberFuntion(添加成员函数)—>函数类型定义为void,函数描述为:MidpointLine—>点击确定2.展开
5、classes—>CWdxview,在MidpointLine函数里添加形参intx0,inty0,intx1,inty1,intcolor,CClientDC&dc3.双击CWdxView,在public中添加代码:voidCWdxView::MidpointLine(intx0,inty0,intx1,inty1,intcolor,CClientDC&dc);最后加分号4.展开CWdxView—>双击OnDraw—>添加代码:MidpointLine(20,15,259,485,RGB(80,120
6、,255),dc);双击MidpointLine,在函数体内编写如下代码:并调试程序CPennewpen(PS_SOLID,1,color);dc.SelectObject(&newpen);inta,b,delta1,delta2,d,x,y;a=y0-y1;b=x1-x0;d=2*a+b;delta1=2*a;delta2=2*(a+b);x=x0;y=y0;dc.SetPixel(x,y,color);while(x7、d+=delta2;}dc.SetPixel(x,y,color);}运行结果:Bresenham算法:添加成员函数1.展开wdxclasses—>右击CWdxView—>选择AddMemberFuntion,函数类型定义为void,函数描述为:Bresenham_Line—>点击确定2.点击classes—>CWdxview,在Bresenham_Line函数里添加形参intx0,inty0,intx1,inty1,intcolor,CClientDC&dc3.双击CWdxView,在public中添
8、加代码:voidCWdxView::Bresenham_Line(intx0,inty0,intx1,inty1,intcolor,CClientDC&dc);最后加分号4.展开CWdxView—>双击OnDraw—>添加代码:Bresenham_Line(65,12,600,450,RGB(20,180,250),dc);5.双击Bresenham_Line,在函数体内编写如下代码:并调试程序intx,y,dx,dy,e,i;dx=x1-