ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:358.81KB ,
资源ID:25607851      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25607851.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机图形学直线圆二维变换.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机图形学直线圆二维变换.docx

1、计算机图形学直线圆二维变换实验一、直线的生成实验目的:1、掌握DDA直线画法、中点画线法和Bresenham画线法2、掌握VC+简单程序设计方法实验容:根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要现在第一象限的直线。实验步骤和方法:首先启动Visual C+ 6.0(注意,其它版本程序无确编译),文件(file)打开工作空间(open workspace)。打开 实验12用基本图形生成基本图形生成.dsw。在fileview窗口,source file下,双击 直线生成view.cpp,或者classview窗口下,cmyview

2、类下相应的函数,按注释改写下列函数: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 SetPixel(POINT point, COLORREF crColor);/po

3、int为坐标点。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;ySetPixel(int(x+0.5),y,COLOR); x=x+1

4、/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(xb-xa);deltay=abs(yb-ya);if(xb-

5、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 if(interchange=1) y+=s2; el

6、se x+=s1; f=f+2*deltay;/Bresenham画直线结束 实验二、圆的生成(中点和Bresenham法)实验目的:1、掌握bresenham画圆的算法。2、掌握VC+简单程序设计方法实验容:根据提供的程序框架,修改部分代码,用Bresenham和中点画圆法画一段圆弧或者画圆。实验步骤和方法:同实验一,修改下列函数:void CMyView:OnBresenhamCircle()void CMyView:OnMidpointCircle()程序代码说明:1、圆的圆心为原点,半径为给定参数,由函数编写时给定,不要求人机交换。/以下请同学们自己编写画圆函数 int x,y; in

7、t 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);while (x=y)if (dSetPixel

8、(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); /中点画圆结束/以下请同学们自己编写画圆函数int c=0;int x=0,y=radius,p=3-2*radius;while(xSetPixel(x0+

9、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);if(pSetPixel(x0+x),(y0+y),c);pdc-SetPixel(x0-x),(y0+y),c);pdc-SetPixel(x0+x),(y0-y),

10、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);/BresenHam画圆结束实验三、二维图形的平移实验目的:1、验证二维图形的几何变换矩阵2、掌握VC+简单程序设计实验容:以一条直线段为例,完成目标的平移(缩放等其它变换选做)软件的结果:点击平移,首先会弹出一个对话框要求输入直线的起点和中点,以及平移的数值,确定后,原直线和平移后的直线同时显示。实验

11、步骤和方法:1、打开实验34用/二维变换.dsw2、改写二维变换view.cpp里的void CMyView:OnMove()函数(需要改写的地方已经做了说明)。3、生成直线的函数采用VC里的函数。4、函数的主要任务是计算出平移后的坐标。程序代码说明: 绘制一条直线需要两个函数。 pdc-MoveTo(int x, int y); 将当前点移动至(x ,y)坐标pdc-LineTo(int x, int y); 从当前点绘制一条直线至(x,y)坐标,并将当前点移动至(x,y)。比如,要绘制一条直线,起点(x0, y0),终点(x1, y1):pdc-MoveTo(x0,y0);pdc-Line

12、To(x1,y1);/此处请同学们自己编写,计算出直线两个端点xa1,ya1,xb1,yb1,直线的平移。xa1=xa+dx;ya1=ya+dy;xb1=xb+dx;yb1=yb+dy;实验四、二维图形的旋转实验目的:1、验证二维图形的几何变换矩阵2、掌握VC+简单程序设计实验容:以一个三角形为例,完成二维图形绕任一点旋转。软件的结果:点击平移,首先会弹出一个对话框要求输入三角形的三个顶点,以及要绕着旋转的点和旋转角度,确定后,原图形和变换后的图形同时显示。实验步骤和方法:1、打开二维变换.dsw2、改写二维变换view.cpp里的void CMyView:OnRotate()函数(需要改写的

13、地方我已经做了说明)。3、生成直线的函数采用VC里的函数。4、函数的主要任务是计算出变换后的坐标。程序代码说明: 绘制一条直线需要两个函数。 pdc-MoveTo(int x, int y); 将当前点移动至(x ,y)坐标pdc-LineTo(int x, int y); 从当前点绘制一条直线至(x,y)坐标,并将当前点移动至(x,y)。比如,要绘制一条直线,起点(x0, y0),终点(x1, y1):pdc-MoveTo(x0,y0);pdc-LineTo(x1,y1);/此处请同学们自己编写,计算出变换后的三角形的三个端点xa1,ya1,xb1,yb1,xc1,yc1,三角形的旋转。 x

14、a1=(xa-x)*cos(angle)-(ya-y)*sin(angle)+x; ya1=(xa-x)*sin(angle)+(ya-y)*cos(angle)+y; xb1=(xb-x)*cos(angle)-(yb-y)*sin(angle)+x; yb1=(xb-x)*sin(angle)+(yb-y)*cos(angle)+y; xc1=(xc-x)*cos(angle)-(yc-y)*sin(angle)+x; yc1=(xc-x)*sin(angle)+(yc-y)*cos(angle)+y;实验五、Bezier曲线的生成实验目的:1、掌握曲线的参数化表示方法2、掌握Bezier曲线的生成算法实验容:给定四个或者四个以上的控制点,生成Bezier曲线。生成算法不限。给定的控制点可以直接在程序里给定,控制多边形和Bezier曲线同时显示。实验步骤和方法:1、打开实验5用Bezier曲线/Bezier.dsw2、改写bezierview.cpp里的void CBezierView:OnBezier()函数(需要改写的地方我已经做了说明)。3、生成直线的函数采用VC里的函数。4、实验过程:将t从01按顺序分成若干点,计算每一个点的坐标并按顺序连接

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1