各章的专业术语介绍

名词解释

alpha:表示图元覆盖像素的程度

第二章 状态管理和绘制几何图形

1.为什么顶点的法线向量要自己来设定?

  • 按理来说,当几何图元确定了后,其表面的各个点的法向量也就确定了啊,opengl完全可以自己计算出各个点的法向量。但是事实上,我们在绘制物体时,只是使用基本的图元来逼近真实的3维空间的物体,如果各个图元的顶点的法线都是根据其图元表面 生成的话,那么加上光照后会发现物体的颜色并不光滑。因为实际得到的是一个多面体而不是一个真实的3维空间物体。比如你用三角形面片逼近一个球,如果你指定一个三角形每个顶点法向量都一样的话,加上光以后你会发现这个球是不光滑的。但如果你根据每个顶点在球面上的坐标计算该顶点实际的法方向(是球面的法方向)的话,得到的球就会光滑得多了。换句话说,其实顶点法向量是根据原先(真实的物体)的曲面算出来的,而不是根据近似以后的三角形面片算出来的。这就说明了为什么计算机不能自己计算法线,因为它并不知道我们要生成的真实物体是什么。

第三章 视图

1.opengl绘图之前的视景体如何确定?

  • 在opengl进行绘图(调用绘图函数)之前,先要进行视口模型、投影变换、模型视图变换。投影变换中确定了投影平面的在xy平面的位置和投影类型(平行投影、透视投影)。但是值得注意的是投影变换并不能完全确定视景体的位置。要确定其位置还要结合观察点。而观察点是在模型视图变换中确定的(glLookat函数)。视景体由投影变换得到的平面(投影平面)结合znear、zfar参数、观察点位置共同确定。znear、zfar分别表示观察点到前平面和投影平面的距离。

2.如何在变化屏幕大小时保持物体不失真?

  • 为了让世界坐标系中的物体在视口中不失真,视景体的投影平面的长宽比必须为H/W,所以在设置投影变换时,glortho的参数要求(right-left)/(top-bottom)=w/h。同时为了在视景体中能够完整的显示物体,必须根据物体的实际坐标确定是固定宽度还是固定高度。通常
     if (w <= h)
          glOrtho(-2.5, 2.5, -2.5*(GLfloat)h/(GLfloat)w,
             2.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0);
       else
          glOrtho(-2.5*(GLfloat)w/(GLfloat)h,
             2.5*(GLfloat)w/(GLfloat)h, -2.5, 2.5, -10.0, 10.0);

3.模型视图变换、投影变换、视口变换的数学原理。

在将一个物体的3维世界坐标转换为2维的屏幕像素坐标的过程中,要用到模型视图变换,投影变换,视口变换。

  • 模型视图变换:实现物体在3维空间中的平移,旋转,缩放操作。这些都可以通过顶点乘以变换矩阵来实现,图形学中有介绍。
  • 投影变换:实现将3维空间中的物体投影到投影面。这些也是可以通过各个点乘以变换矩阵来实现的。看例子理解如何确定投影矩阵。
  • 视口变换:实现将投影面上的2维坐标变换成2维屏幕坐标。这个变换矩阵是根据屏幕窗口和投影面窗口的比例关系来确定的。

例如平行投影中:如何确定一个点到一个面的投影?  空间点Po(X,Y,Z),以及空间平面(Pp,   Np)   其中Pp是平面上任意一点,Np是平面的单位法向量,那么   
Po在平面(Pp,Np)上的投影点坐标P   =   Po   -   Np   *   ((Po-Pp)·Np)   理由就是Po到平面的距离就是D=((Po-Pp)·Np),把Po沿着法向量的反方向移动D就可以了(向量A点乘单位矩阵得到的就是向量A在单位矩阵方向上的投影的长度.)

第四章

1.人眼是如何认识不同颜色的,显示器是如何显示颜色的? 

  •  不同频率(或波长、能量、他们可以相互确定)的光子有着不同的颜色,他们进入人眼后,人眼的红绿蓝三种锥细胞接受他们并组合成一种人眼感知的颜色。计算机模拟这种过程,当希望某个像素产生某种颜色时,就让此像素按照一定的合成比例发射红绿蓝三种光子(电子??),他们进入人眼后,被锥细胞组合后就形成了人们希望它出现的颜色。

2.帧缓冲区是什么,有什么作用?

  • 帧缓冲区是由位平面(即bit位)构成的一块内存,这块内存以某种对应方式决定了显示器上每一个像素的颜色。帧缓冲区中每k个位平面决定了一个像素的颜色(k由不同的系统决定),例如每8个位平面决定一个像素的颜色时,那么这个像素最多可以有256种颜色。

3.抖动

  • 所谓的抖动就是对一块像素块通过对不同颜色像素分配不同的比例来达到从远处看类似于产生了一种新的颜色的技术。例如,有一块10×10像素块,根据某种规则分别给这100个像素赋值白色或黑色,从远处看时,便会认为这块区域时灰色的(根据不同的分配规则还可以得到不同的灰度比例)。

4.openGL中的不同颜色是如何产生的?

  • openGL中的颜色都是通过混合RGB三种纯色来实现的。注意是纯色,产生不同的颜色只是三种纯色采用了不同的光亮强度,然后再把这三种纯色根据各自使用的光亮强度混合在一起,这样就产生了所需的颜色。例如,RGB分别取值为(0.3,0.3,0.3),这表示新的颜色是采用纯的红绿蓝颜色,只是其强度是完全强度的百分之三十来构成的。

第五章

1.光和材料的RGB值的不同含义

  • 对于光线而言,颜色成分的数量对应于每种颜色的完全强度的百分比
  • 对于材料而言,其RGB值对应于其对这些颜色的反射比例。例如,一种材料的R=1,G=0.3,B=0,这表示其反射所有的红光,反射30%的绿光,吸收所有的蓝光。

第八章 绘制像素、位图、字体和图像

1.glRasterPos()和glBitMap()的组合运用:

glRasterPos()设定的绘图位置是相对于世界坐标系的(而世界坐标系是没有单位的,其各个坐标轴的长度是实数集),但是后面用glBitMap()函数绘制位图时,此函数中的所有参数都是相对屏幕像素的(不是在世界坐标系中绘制位图)。那么绘制位图的过程是怎样的呢?

  • 几何图形的绘制过程是:先在世界坐标系中绘制出物体来,然后再把物体在投影面上的形成的图像按一定比例绘制到到视口中。举个例子说明何为一定比例:世界坐标系的投影面长宽为400,300,而视口为200像素,100像素,则世界坐标系中2单位长度对应一个像素)。
  • 位图的绘制过程不同于几何图形,其分成了两步:1,通过glRasterPos设置世界坐标系位置,此时opengl会将此位置向上面一样投影到视口中,确定其在视口中的位置(位置是以像素标示的)。2,glBitMap再根据此视口中确定的位置来用像素坐标(视口)绘制位图。
  • 总结绘制几何物体和位图的不同:几何图形是在世界坐标系中绘制,而位图是在平面绘制的

第九章

1.纹理空间与屏幕像素空间的特点

  • 纹理是定义在纹理空间的,纹理空间与世界空间类似,坐标都是只有长度,没有单位的(而不像屏幕空间,坐标系的单位是像素)。纹理在纹理空间中也不是在每一处都有定义的,因为纹理也是由数组定义的,而数组中的数据是离散的,不可能覆盖每一个空间中的点(因为点可以无限小)。我的理解是纹理空间中网格化后只对(0,0)(0,1)等等这些整数的点定义纹理。定义纹理的数组中每一对数据代表了一个点的纹理,当要映射到屏幕坐标时,根据其长度与屏幕坐标长度(由像素刻画)的比例进行相关的缩放。

第十一章 分格化和二次方程表面

1.分格化中的闭合区域的环绕规则描述与书上不同,如下:

  • 一个闭合的区域环绕数的求法是:从此区域引一条射线到无穷远,经过逆时针方向的轮廓线则+1,进过顺时针方向的轮廓线则-1,例子如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值