计算机图形学,直线,圆,二维变换_第1页
计算机图形学,直线,圆,二维变换_第2页
计算机图形学,直线,圆,二维变换_第3页
计算机图形学,直线,圆,二维变换_第4页
计算机图形学,直线,圆,二维变换_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验1,直线的生成实验目的:1.主数据分析直线图、中点图和布雷森汉图2.掌握VC的简单编程方法实验内容:根据所提供的程序框架,只要实现了第一象限的直线,就可以修改一些代码来完成画直线的功能(中点画法或布雷森汉画法)。实验步骤和方法:首先,启动Visual C 6.0(注意其他版本的程序不能正确编译),然后文件)打开工作区。打开实验12。生成生成。带有基本图形的dsw。在fileview窗口的源文件下,双击该行以生成view.cpp,或者在classview窗口的cmyview类下,根据注释重写以下函数:无效CMyView:OnDdaline()(这是为DDA生成的直线)在布雷森汉姆线()上取消

2、cmyview :(这是布雷森汉姆绘制的直线)空cmyview : onmidpointline()(这是中点绘制方法)程序代码描述:1.直线的两个端点由对话框输入,给定的程序已经完成了代码的输入。2.设定像素的使用:COLOREF设置像素(int x,int y,COLOREF Cr COLOR);/x,y是坐标点。彩色参考设定像素(点点,彩色参考彩色);/点是坐标点。3.本实验预先提供了dda直线的功能演示(红色部分是重点,其他部分可以忽略),画直线和BresenHam画直线的功能由学生自己参照DDA直线的示例功能完成。/以下是DDA绘制直线的源程序浮点x,y,dx,dy,k;dx=(浮点

3、)(XB-xa);dy=(float)(Yb-ya);k=dy/dx;x=xay=yaif(abs(k)1)(x=xax=xbx)PDC-设定像素(x,int(y 0.5),COLOR);y=y k;if(abs(k)=1)for(y=ya;y=yby)PDC-设定像素(int(x 0.5),y,COLOR);x=x 1/k;/DDA以画一条直线结束/下面是在中点画一条直线的源程序浮动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=yaPDC-设定像素(x,y,COLOR);while(xSetPixel(x

4、,y,COLOR);/在中间的点画一条直线到终点/下面是Bresenham绘制直线的源程序int i,s1,s2,交换;float f,x,y,deltax,deltay,tempx=xay=yadeltax=ABS(XB-xa);deltay=ABS(Yb-ya);if(xb-xa=0)S1=1;否则S1=-1;if(yb-ya=0)S2=1;否则S2=-1;if(deltaydeltax) temp=deltaxdeltax=deltaydeltay=温度;互换=1;否则交换=0;f=2 *y-x;PDC-设定像素(x,y,COLOR);对于(I=1;i=deltaxI) if(f=0)i

5、f(互换=1)x=S1;否则y=s2PDC-设定像素(x,y,COLOR);f=f-2 *x;否则if(互换=1)y=S2;否则x=s1f=F2 *y;/Bresenham以画一条直线结束实验二。圆的生成(中点法和布雷森汉法)实验目的:1.布雷森汉姆大师画圆的算法。2.掌握VC的简单编程方法实验内容:根据所提供的程序框架,对部分代码进行了修改,用Bresenham和中点画圆的方法画出了圆弧或圆。实验步骤和方法:按照实验1修改以下功能:无效cmyview :3360 onbresenhanmcircle()void cmyview : onmidpointcircle()程序代码描述:1.圆心是

6、原点,半径是给定的参数,该参数是在编写函数时给定的,不需要人机交互。/请自己编写画圆函数int x,y;int c=0;浮动d;x=0;y=半径;d=1.25-半径;PDC-设定像素(x0 x),(y0 y),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 x),(y0-y),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 y),(y0 x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);而(x=y) if(d0)d=2

7、* x 3;否则 d=2 *(x-y)5;y-;x;PDC-设定像素(x0 x),(y0 y),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 x),(y0-y),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 y),(y0 x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);/在中间点画圆结束/请自己编写画圆函数int c=0;int x=0,y=半径,p=3-2 *半径;而(XsetPixel)(x0 x),(y0 y

8、),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 x),(y0-y),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 y),(y0 x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);if(p0)p=P4 * x 6;其他p=P4 *(x-y)10;y-=1;x=1;if (x=y)PDC-设定像素(x0 x),(y0 y),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 x),(y0-y

9、),c);PDC-设定像素(x0-x),(y0-y),c);PDC-设定像素(x0 y),(y0 x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);PDC-设定像素(x0-y),(y0-x),c);/布雷森汉画完了一个圆实验3。二维图形的翻译实验目的:1.验证二维图形的几何变换矩阵2.掌握VC的简单编程实验内容:以直线段为例,完成目标的平移(缩放和其他变换)软件结果:点击平移,首先弹出对话框,询问直线的起点和中点以及平移值。确认后,原始直线和翻译后的直线将同时显示。实验步骤和方法:1.打开实验34以使用/2d变换。vc开发环境生成的

10、workspace文件2.重写2d转换视图中的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-LineTo(x1,y1);/在这里,请你自己写并计算两个端点xa1,ya1,xb1,yb1的翻译。x

11、a1=xa dx。ya1=ya dyxb1=xb dxyb1=yb dy实验4。二维图形的旋转实验目的:1.验证二维图形的几何变换矩阵2.掌握VC的简单编程实验内容:以三角形为例,完成二维图形绕任意点的旋转。软件结果:点击平移,首先会弹出一个对话框,询问三角形的三个顶点,以及要旋转的点和旋转角度。确认后,原始图形和转换后的图形将同时显示。实验步骤和方法:1、打开二维变换。vc开发环境生成的workspace文件2.在2d转换视图中重写void CMyView:OnRotate()函数。3.生成直线的功能采用VC中的函数。4.该函数的主要任务是计算变换后的坐标。程序代码描述:画一条直线需要两个功

12、能。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的旋转。xa1=(xa-x)*cos(角度)-(ya-y)*sin(角度)x;ya1=(xa-x)*sin(角度)(ya-y)*cos(角度)y;xb1=(xb-x)*cos(角度)-(yb-y)*sin(角度)x;yb1=(xb-x)*sin(角度)(yb-y)*cos(角度)y;xc1=(xc-x)*cos(角度)-(yc-y)*sin(角度)x;yc1=(xc-x)*sin(角度)(yc-y)*cos(角度)y;实验五。贝塞尔曲线的生成实验目的:1.掌握曲线的参数表示2.掌握贝塞尔曲线的生成算法实验内容:给定四个或更多控制点,生成贝

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论