计算机图形学实验指导书

上传人:豆浆 文档编号:31453093 上传时间:2018-02-07 格式:DOC 页数:15 大小:381KB
返回 下载 相关 举报
计算机图形学实验指导书_第1页
第1页 / 共15页
计算机图形学实验指导书_第2页
第2页 / 共15页
计算机图形学实验指导书_第3页
第3页 / 共15页
计算机图形学实验指导书_第4页
第4页 / 共15页
计算机图形学实验指导书_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《计算机图形学实验指导书》由会员分享,可在线阅读,更多相关《计算机图形学实验指导书(15页珍藏版)》请在金锄头文库上搜索。

1、 计算机图形学实验指导书制 定 人:刘岩 牛翠霞教 研 室:数字媒体教研室计算机科学与技术学院2008 年 9 月- 2 -前 言计算机图形学课程是计算机科学与技术专业的重要专业课程之一,计算机图形学的主要实验内容就是验证如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。该实验指导书给出了四个图形学中最基本的实验操作。即图形绘制、图形几何变换、图形裁剪和图形填充。力求学生通过该实验指导书,提高上机操作能力,将具体算法进行编程演示,达到更好的效果,并了解相应图形应用软件的开发编写情况。 - 3 -实验要求计算机图形学课程实验的目的是为了使学生在课程学习的同时,通过

2、在具体的编程环境中的实际操作,对计算机图形学的基本概念和方法能有一个初步的了解,使学生更好地掌握计算机图形学教学大纲要求的内容。在计算机图形学的课程实验过程中,要求学生做到:一、预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前做出思考和分析。二、认真书写实验报告。实验报告包括实验目的和要求,实验情况及其分析。写出程序设计说明,给出源程序框图和清单。三、遵守机房纪律,服从辅导教师指挥,爱护实验设备。- 4 -目 录实验 1 基本图形生成算法(5)实验 2 多边形填充(8)实验 3 多边形裁剪(10)实验 4 图形变换(13)- 5 -实验 1 基本图形生成算法一、实验目的

3、直线的生成是用计算机生成图形最基本的技能,通过本实验使学生掌握如何用计算机生成直线和改变直线的属性。熟悉开发环境;生成直线、二次曲线等基本图形。二、实验原理一、直线的 DDA算法DDA是数字微分分析式(Digital Differential Analyzer)的缩写。已知直线两端点(x1,y1)、(x2,y2),则斜率 m为:m = (y2-y1)/(x2-x1)= Dx/Dy;直线中的每一点坐标都可以由前一点坐标变化一个增量(Dx, Dy)而得到,即表示为递归式:xi+1=xi+Dx yi+1=yi+Dy递归式的初值为直线的起点(x1, y1) ,这样,就可以用加法来生成一条直线。二、Br

4、esenham 算法画直线本算法由 Bresenham在 1965年提出。设直线从起点(x1, y1)到终点(x2, y2) 。直线可表示为方程 y=mx+b。其中b = y1 - m * x1,m = (y2-y1)/(x2-x1)=dy/dx我们的讨论先将直线方向限于第一象限,在这种情况下,当直线光栅化时,x 每次都增加 1个单元,即 xi+1=xi+1,而 y相应增加应当小于 1。为了光栅化,yi+1 只可能yi+1=yi 或者 yi+1=yi+1。选择的原则是看精确值 y与 yi及 yi+1的距离 d1及 d2的大小而定。计算式为:y=m(xi+1)+b (1.1)d1=y-yi (1

5、.2)d2=yi+1-y (1.3)如果 d1-d20,则 yi+1=yi+1,否则 yi+1=yi。因此算法的关键在于简便地求出 d1-d2的符号。将式(1.1) 、 (1.2) 、 (1.3)代入 d1-d2,得d1-d2=2y-2yi-1=2(dy/dx) (xi+1)-2yi+2b-1- 6 -用 dx乘等式两边,并以 Pi=dx(d1-d2)代入上述等式,得Pi=2xidy-2yidx+2dy+dx(2b-1) (1.4)d1-d2是我们用以判断符号的误差。由于在 1a象限,dx 总大于 0,所以 Pi仍旧可以用作判断符号的误差。Pi-1 为:Pi+1=Pi+2dy-2dx(yi+1

6、-yi) (1.5)误差的初值 P1,可将 x1, y1,和 b代入式(1.4)中的 xi, yi而得到:P1=2dy-dx (1.6)综述上面的推导,第一象限内的直线 Bresenham算法思想如下:1画点(x1, y2); dx=x2-x1; dy=y2-y1;计算误差初值 P1=2dy-dx; i=1;2求直线的下一点位置:xi+1=xi+1;if Pi0 则 yi+1=yi+1;否则 yi+1=yi;3画点(xi+1, yi-1) ;4求下一个误差 Pi+1;if Pi0 则 Pi+1=Pi+2dy-2dx;否则 Pi+1=Pi+2dy;5i=i+1; if iabs(dy)steps

7、=abs(dx);else steps=abs(dy);delta_x=(float)dx/(float)steps;delta_y=(float)dy/(float)steps;x=xa;y=ya;SetPixel(hdc,x,y,0x0000ff);for(k=1;k ClipBoundary0.x)/裁剪边为窗口下边if(testpt.y= ClipBoundary0.y) return TRUE;else if(ClipBoundary1.x ClipBoundary0.x) /裁剪边为窗口右边if(testpt.x= ClipBoundary0.x) return TRUE;retu

8、rn FALSE; /直线段 SP和窗口边界求交,返回交点;void Intersect (Vertex&S,Vertex &P,Edge ClipBoundary,Vertex& IntersectPt) if(ClipBoundary0.y= ClipBoundary1.y)/水平裁剪边 IntersectPt.y = ClipBoundary0.y;IntersectPt.x = S.x+( ClipBoundary0.y -S.y)*(P.x - S.x) / (P.y - S.y);else /垂直裁剪边 Intersect.x = ClipBoundary0.x;Intersect

9、.y = S.y + (ClipBoundary0.x - S.x)*(P.y - S.y) / (P.x. - S.x);- 13 -实验 4 图形变换一、实验目的利用实验一生成的直线、二次曲线等基本图形进行二维图形的各种几何变换。二、实验原理图形的几何变换一般是指对图形的几何信息经过变换后产生新的图形,图形几何变换既可以看作是坐标系不动而图形变动,变动后的图形在坐标系中的坐标值发生变化;出可以看作图形不动而坐标系变动,变动后的图形在新坐标系下具有新的坐标值。这两种情况本质上都是一样的,都是图形由新的坐标值表示,因此是新产生的图形。图形几何变换包括比例变换、对称变换、错切变换、旋转变换、平移

10、变换及其复合变换。图形上所有的点在几何变换前后的坐标关系一般用解析几何方法可以求得,但这些几何关系用矩阵方法表示,运算更为方便。图形基本几何变换是指比例变换、对称变换、错切变换、旋转变换和平移变换等。除平移变换外,这里其它四种几何变换都可以用组成图形的点向量(或称 12阶矩阵)和22阶变换矩阵相乘表示,而平移变换需引入新方法来实现。三、实验内容用 VC编程,用 VC编程,实现如下变换:1平移变换 2旋转变换 3对称变换 4比例缩放变换。四、实验方法与步骤在实验一的基础上对其图形分别进行平移变换、旋转变换、对称变换以及比例变换。程序代码示例如下:#图形平移变换#参数说明:/lpDIBBits 源

11、图像数据去指针/lWidth 宽度/lHeight 高度/lXOffset X轴线偏移/lYOffset Y轴线偏移- 14 -/函数说明:该函数实现图像的平移操作BOOL TranslationDIB1(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, LONG lXOffset, LONG lYOffset)/ 略#图像旋转变换#/参数说明:/ HWND hWnd:窗口句柄/程序说明:图像的旋转BOOL Rotation(HWND hWnd)/略#图像对称变换#/函数参数:/hWnd是窗口句柄 /Xdirection 是镜像方向(对称变换) /函数说明:该函数根据输入的方向参数实现窗口图像的镜像处理BOOL Mirror(HWND hWnd,BOOL XDirection)/略#图像缩放变换#/参数说明:/ HWND hWnd:窗口句柄/程序说明:进行图像的缩放- 15 -BOOL Zoom(HWND hWnd)/略主要参考书:计算机图形学,张彩明 出版社: 科学技术出版社. 出版时间:2002 年。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号