计算机图形学,直线,圆,二维变换.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《计算机图形学,直线,圆,二维变换.doc》由会员分享,可在线阅读,更多相关《计算机图形学,直线,圆,二维变换.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流计算机图形学,直线,圆,二维变换.精品文档.实验一、直线的生成实验目的:1、 掌握DDA直线画法、中点画线法和Bresenham画线法2、 掌握VC+简单程序设计方法实验内容:根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要求实现在第一象限内的直线。实验步骤和方法:首先启动Visual C+ 6.0(注意,其它版本程序无法正确编译),文件(file)打开工作空间(open workspace)。打开 实验12用基本图形生成基本图形生成.dsw。在fileview窗口,source f
2、ile下,双击 直线生成view.cpp,或者classview窗口下,cmyview类下相应的函数,按注释改写下列函数:void CMyView:OnDdaline() (此为DDA生成直线)void CMyView:OnBresenhamline()(此为Bresenham画直线)void CMYView:OnMidPointLine()(此为中点画线法)程序代码说明:1、直线的两个端点,由对话框输入,给定程序已经完成输入代码。2、SetPixel的用法:COLORREF SetPixel(int x, int y, COLORREF crColor);/x,y为坐标点。COLORREF
3、SetPixel(POINT point, COLORREF crColor);/point为坐标点。3、 本实验事先提供DDA话直线的函数示范(红色部分是重点,其它部分可以不看)中点画直线函数和BresenHam画直线函数由同学们参照dda直线的示例函数自己完成。/以下为DDA画直线的源程序float x,y,dx,dy,k;dx=(float)(xb-xa);dy=(float)(yb-ya);k=dy/dx;x=xa;y=ya;if(abs(k)1)for (x=xa;xSetPixel(x, int(y+0.5),COLOR);y=y+k;if(abs(k)=1)for(y=ya;yS
4、etPixel(int(x+0.5),y,COLOR);x=x+1/k;/DDA画直线结束/以下为中点画直线的源程序float a,b,d1,d2,d,x,y; a=ya-yb,b=xb-xa,d=2*a+b; d1=2*a,d2=2*(a+b); x=xa,y=ya; pdc-SetPixel(x,y,COLOR); while(xxb) if(dSetPixel(x,y,COLOR);/中点画直线结束/以下为Bresenham画直线的源程序int i,s1,s2,interchange;float f,x,y,deltax,deltay,temp;x=xa;y=ya;deltax=abs(
5、xb-xa);deltay=abs(yb-ya);if(xb-xa=0) s1=1;else s1=-1;if(yb-ya=0) s2=1;else s2=-1;if(deltaydeltax) temp=deltax;deltax=deltay;deltay=temp;interchange=1;else interchange=0;f=2*deltay-deltax;pdc-SetPixel(x,y,COLOR);for(i=1;i=0)if(interchange=1) x+=s1;else y+=s2;pdc-SetPixel(x,y,COLOR);f=f-2*deltax;else
6、if(interchange=1) y+=s2;else x+=s1;f=f+2*deltay;/Bresenham画直线结束实验二、圆的生成(中点和Bresenham法)实验目的:1、 掌握bresenham画圆的算法。2、 掌握VC+简单程序设计方法实验内容:根据提供的程序框架,修改部分代码,用Bresenham和中点画圆法画一段圆弧或者画圆。实验步骤和方法:同实验一,修改下列函数:void CMyView:OnBresenhamCircle()void CMyView:OnMidpointCircle()程序代码说明:1、圆的圆心为原点,半径为给定参数,由函数编写时给定,不要求人机交换。
7、/以下请同学们自己编写画圆函数int x,y;int c=0;float d;x=0;y=radius;d=1.25-radius;pdc-SetPixel(x0+x),(y0+y),c);pdc-SetPixel(x0-x),(y0+y),c);pdc-SetPixel(x0+x),(y0-y),c);pdc-SetPixel(x0-x),(y0-y),c);pdc-SetPixel(x0+y),(y0+x),c);pdc-SetPixel(x0-y),(y0+x),c);pdc-SetPixel(x0+y),(y0-x),c);pdc-SetPixel(x0-y),(y0-x),c);wh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 直线 二维 变换
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内