****计算机学院《计算机图形学》课程报告学院:计算机科学与工程专业:计算机科学与技术班级:***学号:**********姓名:******成绩:一、了解OpenGL编程步骤及直线生成算法3.1理解OpenGL的程序结构:掌握OpenGL提供的基本图形函数,尤其是生成简单几何元素的函数。3.1基本数据结构描述:逐点比较法:A(200,200)、B(2000,2000)DDA:A(200,200)、B(2000,2000)Brasenham:A(0,0)、B(200,200)3.2算法描述:逐点比较法:对于第一象限直线OA上任一点(X,Y):X/Y=Xe/Ye若点为Pi(Xi,Yi),则该点的偏差函数Fi可表示为若Fi=0,表示加工点位于直线上;若Fi0,表示加工点位于直线上方;若Fi0,表示加工点位于直线下方。(2)偏差函数字的递推计算采用偏差函数的递推式(迭代式)既由前一点计算后一点Fi=YiXe-XiYe若Fi=0,规定向+X方向走一步Xi+1=Xi+1Fi+1=XeYi–Ye(Xi+1)=Fi–Ye若Fi0,规定+Y方向走一步,则有Yi+1=Yi+1Fi+1=Xe(Yi+1)-YeXi=Fi+Xe(3)终点判别直线插补的终点判别可采用三种方法。1)判断插补或进给的总步数;2)分别判断各坐标轴的进给步数;3)仅判断进给步数较多的坐标轴的进给步数。DDA算法:(1)已知过端点P0(x0,y0),P1(x1,y1)的直线段L:y=kx+b(2)直线斜率为:k=(y1-y0)/(x1-x0)(3)Xi+1=Xi+ε*ΔXYi+1=Yi+ε*ΔY其中,ε=1/max(|ΔX|,|ΔY|)max(|ΔX|,|ΔY|)=|ΔX|(|k|=1)|ΔY|(|k|1)(4)|k|=1时:Xi+1=Xi+(或-)1Yi+1=Yi+(或-)k|k|1时:Xi+1=Xi+(或-)1/kYi+1=Yi+(或-)1Brasenham算法:设直线起点P0(x0,y0),终点P1(x1,y1),令e0=2y-x作为判别函数,根据e0的正负,可以确定走向:①e0<0,Y方向不走步②e0>=0,Y方向走一步递推公式:对于第i+1步(i=0,l,2,……,n)如果ei≥0,则Y方向走一步:Xi+l=Xi+1Yi+1=Yi+1ei+1=ei+2y-2x如果ei<0,则Y方向不走步:Xi+l=Xi+1Yi+1=Yiei+1=ei+2y3.3结果显示:逐点比较法(图1.1):图1.1DDA算法(图2):图1.2Brasenham算法(图3):图1.3二、二维图形几何变换1.1基本数据结构描述:点坐标:A0(100.00,0.00)B0(50.00,86.60)C0(-50.00,86.60)D0(-100.00,0.00)E0(-50.00,-86.60)F0(50.00,-86.60)A1(81.38,29.62)B1(15.04,85.29)C1(-66.34,55.67)D1(-81.38,-29.62)E1(-15.04,-85.29)F1(66.34,-55.67)A2(57.45,48.21)B2(-13.02,73.86)C2(-70.48,25.65)D2(-57.45,-48.21)E2(13.02,-73.86)F2(70.48,-25.65)A3(32.48,56.25)B3(-32.48,56.25)C3(-64.95,0.00)D3(-32.48,-56.25)E3(32.48,-56.25)F3(64.95,-0.00)A4(9.77,55.40)B4(-43.09,36.16)C4(-52.86,-19.24)D4(-9.77,-55.40)E4(43.09,-36.16)F4(52.86,19.24)A5(-8.46,47.97)B5(-45.78,16.66)C5(-37.32,-31.31)D5(8.46,-47.97)E5(45.78,-16.66)F5(37.32,31.31)A6(-21.09,36.54)B6(-42.19,0.00)C6(-21.09,-36.54)D6(21.09,-36.54)E6(42.19,-0.00)F6(21.09,36.54)A7(-27.99,23.48)B7(-34.33,-12.50)C7(-6.34,-35.98)D7(27.99,-23.48)E7(34.33,12.50)F7(6.34,35.98)A8(-29.73,10.82)B8(-24.24,-20.34)C8(5.49,-31.16)D8(29.73,-10.82)E8(24.24,20.34)F8(-5.49,31.16)A9(-27.40,0.00)B9(-13.70,-23.73)C9(13.70,-23.73)D9(27.40,-0.00)E9(13.70,23.73)F9(-13.70,23.73)0123456789Ai-Bi1111111111Bi-Ci1111111111Ci-Di1111111111Di-Ei1111111111Ei-Fi1111111111Fi-Ai11111111111.2算法描述:在齐次坐标理论下,二维图形几何变换矩阵可用下式表示:ifchebgdaTnkxxkk2,1,0,)(平移变换:[x*y*1]=[xy1]*0000001ts=[t*xs*y1]旋转变换:在平面上的二维图形饶原点逆时针旋转Ө角,变换矩阵为[x*y*1]=[xy1]*cossin0sincos0001=[x*cosө-y*sinө]比例变换:[x*y*1]=[xy1]*1000101mn=[m+xn+y1]错切变换:根据上述矩阵假设P(x1,y1)为错切变换之前的像素点,则错切变换以后对应的像素P’(x2,y2)当X方向错切变换时:当Y方向错切变换时:1.3结果显示:原始图形(图2.1):图2.1X方向向左移动100个单位,Y方向向上移动100个单位(图2.2):图2.2原地顺时针旋转30度(图2.3):图2.3原地缩小1倍(图2.4)和放大1倍(图2.5):图2.4图2.5错切:图2.6三、三维图形几何变换2.1基本数据结构描述:顶点坐标:{-X,0.0,Z},{X,0.0,Z},{-X,0.0,-Z},{X,0.0,-Z}{0.0,Z,X},{0.0,Z,-X},{0.0,-Z,X},{0.0,-Z,-X}{Z,X,0.0},{-Z,X,0.0},{Z,-X,0.0},{-Z,-X,0.0}面表:{1,4,0},{4,9,0},{4,5,9},{8,5,4},{1,8,4}{1,10,8},{10,3,8},{8,3,5},{3,2,5},{3,7,2}{3,10,7},{10,6,7},{6,11,7},{6,0,11},{6,1,0}{10,1,6},{11,0,9},{2,11,9},{5,2,9},{11,2,7}2.2算法描述:平移:设Tx,Ty,Tz是物体在三个坐标方向上的移动量,则有公式:x′=x+Txy′=y+Tyz′=z+Tz矩阵运算表达为:[x′y′z′1]=[xyz1]简记为:T(Tx,Ty,Tz)旋转:旋转分为三种基本旋转:绕z轴旋转,绕x轴旋转,绕y轴旋转。在下述旋转变换公式中,设旋转的参考点在所绕的轴上,绕轴转θ角,方向是从轴所指处往原点看的逆时针方向。绕z轴旋转的公式为:x′=xcosθ-ysinθy′=xsinθ+ycosθz′=z矩阵运算的表达为:[x′y′z1]=[xyz1]简记为Rz(θ)。绕x轴旋转的公式为:x′=xy′=ycosθ-zsinθz′=ysinθ+zcosθ矩阵运算的表达为:[x′y′z′1]=[xyz1]简记为Rx(θ)绕y轴旋转的公式为:x′=zsinθ+xcosθy′=yz′=zcosθ-xsinθ矩阵的运算表达式为:[x′y′z′1]=[xyz1]简记为Ry(θ)。2.3结果显示:正二十面体(图3.1):图3.1原图像向X、Y、Z负方向轴各移动一个单位(图3.2):图3.2原地缩小一倍(图3.3):图3.3图形绕Y轴旋转(图3.4):图3.4错切:图3.5对称(图3.6):图3.6四、心得体会在这次的课程中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。课程是我们理论课程知识综合应用的训练,在这次学习过程中,了解了计算机图形的基础,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时的不足和薄弱环节,从而加以弥补.从这次的课程学习让我们知道了自己的不足,学习的知识不够充分,对于计算机了解狭隘的缺点,对今后的学习和工作进步都有非常大的帮助。教师评语:评定成绩:教师签字:年月日