****计算机学院
《计算机图形学》课程报告
学 院:计算机科学与工程
专 业:计算机科学与技术
班 级:***
学 号:**********
姓 名:******
成 绩:
掌握OpenGL提供的基本图形函数,尤其是生成简单几何元素的函数。
逐点比较法:
A(200,200)、B(2000,2000)
DDA:
A(200,200)、B(2000,2000)
Brasenham:
A(0,0)、B(200,200)
逐点比较法:
对于第一象限直线OA上任一点(X,Y):X/Y = Xe/Ye
若点为Pi(Xi,Yi),则该点的偏差函数Fi可表示为
若Fi= 0,表示加工点位于直线上;
若Fi> 0,表示加工点位于直线上方;
若Fi< 0,表示加工点位于直线下方。
(2)偏差函数字的递推计算
采用偏差函数的递推式(迭代式)
既由前一点计算后一点
Fi =Yi Xe -XiYe
若Fi>=0,规定向 +X 方向走一步
Xi+1 = Xi +1
Fi+1 = XeYi –Ye(Xi +1)=Fi –Ye
若Fi<0,规定 +Y 方向走一步,则有
Yi+1 = Yi +1
Fi+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+ε*ΔX
Yi+1=Yi+ε*ΔY 其中,
ε=1/max(|ΔX|,|ΔY|)
max(|ΔX|,|ΔY|)= |ΔX| (|k|<=1)
|ΔY| (|k|>1)
(4)|k|<=1时:Xi+1=Xi+(或-)1
Yi+1=Yi+(或-)k
|k|>1时:Xi+1=Xi+(或-)1/k
Yi+1=Yi+(或-)1
Brasenham算法:
设直线起点P0(x0,y0),终点P1(x1,y1),令e0=2 y - x作为判别函数,根据e0的正负,可以确定走向:
① e0<0,Y 方向不走步
② e0>=0,Y方向走一步
递推公式:
对于第i +1步(i=0,l,2,……,n)
如果ei ≥ 0,则Y方向走一步:
Xi+l= Xi+1 Yi+1 =Yi+1
ei+1= ei + 2 y - 2 x
如果ei<0,则Y方向不走步:
Xi+l= Xi+1 Yi+1 =Yi
ei+1= ei+ 2 y
逐点比较法(图1.1):
图1.1
DDA算法(图2):
图1.2
Brasenham算法(图3):
图1.3
点坐标:
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)
在齐次坐标理论下,二维图形几何变换矩阵可用下式表示:
平移变换:[x* y* 1] =[x y 1] * =[t*x s*y 1]
旋转变换:在 平面上的二维图形饶原点逆时针旋转Ө角,变换矩阵为
[x* y* 1]=[x y 1] * = [x*cosө-y*sinө]
比例变换:[x* y* 1]=[x y 1] * =[m+x n+y 1]
错切变换:
根据上述矩阵假设P(x1, y1)为错切变换之前的像素点,则错切变换以后对应的像素
P’(x2, y2)当X方向错切变换时:
当Y方向错切变换时:
原始图形(图2.1):
图2.1
X方向向左移动100个单位,Y方向向上移动100个单位(图2.2):
图2.2
原地顺时针旋转30度(图2.3):
图2.3
原地缩小1倍(图2.4)和放大1倍(图2.5):
图2.4
图2.5
错切:
图2.6
顶点坐标:
{ -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}
平移:
设Tx,Ty,Tz是物体在三个坐标方向上的移动量,则有公式:
x′=x+Tx
y′=y+Ty
z′=z+Tz
矩阵运算表达为:
[x′ y′ z′ 1]=[x y z 1]
简记为:T(Tx,Ty,Tz)
旋转:
旋转分为三种基本旋转:绕z轴旋转,绕x轴旋转,绕y轴旋转。在下述旋转变换公式中,设旋转的参考点在所绕的轴上,绕轴转θ角,方向是从轴所指处往原点看的逆时针方向。
绕z轴旋转的公式为:
x′=xcosθ-ysinθ
y′=xsinθ+ycosθ
z′=z
矩阵运算的表达为:
[x′ y′ z 1]=[x y z 1]
简记为Rz(θ)。
绕x轴旋转的公式为:
x′=x
y′=ycosθ-zsinθ
z′=ysinθ+zcosθ
矩阵运算的表达为:
[x′ y′ z′ 1]=[x y z 1]
简记为Rx(θ)
绕y轴旋转的公式为:
x′=zsinθ+xcosθ
y′=y
z′=zcosθ-xsinθ
矩阵的运算表达式为:
[x′ y′ z′ 1]=[x y z 1]
简记为Ry(θ)。
正二十面体(图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
四、心得体会
在这次的课程中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。课程是我们理论课程知识综合应用的训练,在这次学习过程中,了解了计算机图形的基础,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时的不足和薄弱环节,从而加以弥补.从这次的课程学习让我们知道了自己的不足,学习的知识不够充分,对于计算机了解狭隘的缺点,对今后的学习和工作进步都有非常大的帮助。
教师评语:
评定成绩:
教师签字:
年 月 日
本文来源:https://www.2haoxitong.net/k/doc/50fee1d28ad63186bceb19e8b8f67c1cfad6ee02.html
文档为doc格式