计算机图形学

1计算机图形学综述

计算机图形学的研究内容

  • 如何在计算机中表示图形

    • 图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成
  • 如何利用计算机进行图形的生成、处理和显示的相关原理与算法

从处理技术上来看,图形主要分为两类

  • 由线条组成的图形,如工程图、等高线地图、曲面的线框图等
  • 类似于照片的明暗图(Shading),也就是通常所说的真实感图形

主要内容

  • 计算机辅助设计

  • 图示图形学

  • 计算机艺术

  • 娱乐

  • 教学和培训

  • 可视化

  • 图像处理

  • 图形用户界面

    • 典型的图形用户界面包括

      • 一个窗口管理器
      • 菜单显示
      • 图标

2图形系统综述

视频显示设备

  • 图形系统一般使用视频显示器作为基本的输出设备,主要的视频显示器设备有:

    • 刷新式CRT(阴极射线管)、光栅扫描显示器、随机扫描显示器、彩色CRT监视器、直视存储管、
      平板显示器、三维观察设备、立体感和虚拟现实系统

光栅扫描系统

随机扫描系统

图形监视器与工作站

※输入设备

  • 有多种设备用于图形工作站的数据输入:

    • 键盘
    • 鼠标
    • 跟踪球和空间球
    • 操纵杆
    • 数据手套
    • 数字化仪
    • 图像扫描仪
    • 触摸板
    • 光笔
    • 声音系统

※硬拷贝设备

  • 35-mm幻灯片

  • 投影胶片

  • 打印机

    • 打印机以击打式或非击打式产生输出

      • 击打式打印机隔着色带将某种格式的字符压在纸上
      • 非击打式打印机和绘图仪使用激光技术、喷墨技术、复印处理、静电方式和电热方式,把图像印在纸上
  • 绘图仪

图形软件

  • 图形软件通常分为两类

    • 通用编程软件包
    • 专用应用软件包

3输出图元

1.点和线

  • 如何绘制点?

    • 通过将应用程序提供的单个坐标位置转换成输出设备的相应操作,可以进行点的绘制
  • 如何绘制线?

    • 通过计算沿路径上两指定端点间的中间位置,可以绘制一条线段

※2画线算法

  • DDA算法
  • Bresenham画线算法

3.帧缓冲的装载

*4.画线函数

※5.圆生成算法

  • 圆的特性
  • 中点圆算法

※6.椭圆生成算法

  • 椭圆特征
  • 中点椭圆算法

7.其他曲线

8.并行曲线算法

9.曲线函数

10.像素编址和物体的集合表示

11.填充区域图元

  • 扫描线多边形填充算法

  • ※内外测试

    • 奇偶规则

      • 从任何位置点P到对象坐标范围以外的远点画一条射线,统计沿该射线与各边的交点数目。
        如果交点数为奇数,P是内部点。
        如果交点数为偶数,P是外部点。
    • 非零环绕数规则

      • 该方法统计多边形边以逆时针方向环绕某一特定点的次数,这个数称为环绕数。将二维物体的内部点定义为具有非零值的环绕数
      • 初始化环绕数为0,若从左往右穿过射线+1,从右往左穿过射线减1,内部点环绕数非零
    • 特殊情况

      • 穿过一个点时,若两边在射线同测则算2,在异侧则算1
  • 曲线边界区域的扫描线填充

  • ※边界填充算法

    • 区域填充的另一种方法是从区域的一个内部点开始,由内向外绘制点直到边界

    • 假如边界是以单一颜色指定的,则填充算法可逐个像素地向外处理,直至遇到边界颜色。这种方法称为边界填充算法

      • 边界填充程序接收作为输入的内部点(x ,y)的坐标、填充颜色和边界颜色。
      • 从(x ,y)开始,程序检测相邻位置以确定其是否是边界颜色,如果不是,就用填充颜色涂色,并检测其相邻位置。
      • 这个过程延续到检测完区域边界颜色范围内的所有像素为止。
    • 4连通区域、8连通区域

    • 逼近法

      • 利用堆栈,一次填充一行,不可穿墙
  • 泛滥填充算法

    • 有时,我们要对一个不是用单一颜色边界定义的区域进行填充(或重新涂色)

    • 通过替换指定的内部颜色,从而对该区域涂色而不是搜索边界颜色值,这个方法称为泛滥填充算法

      • 从指定的内部点(x ,y)开始,将期望的填充颜色赋给所有当前设置为给定的内部颜色的像素。假如所要涂色的区域具有多种内部颜色,可以重新设置像素值,从而使所有的内部点具有相同的颜色。然后使用4 —连通或8 —连通方法,逐步连通各像素位置,直到所有内部点都已被涂色

12.区域填充函数

13.单元阵列

14.字符生成

  • 存储的计算机字体有两种不同的表示方法

    • 点阵字体
    • 轮廓字体
  • 两种不同的字体

    • 有衬线

      • 在字符笔画末端有细线或加重
    • 无衬线

4输出图元的属性

线属性

  • 线型

    • 实线、虚线、点线、点划线
    • 光栅线算法通过绘制像素段来显示线型属性
  • 线宽

    • 线宽选择的实现取决于输出设备的能力

    • 其他线宽则是作为标准线宽的正整数倍,通过沿相邻平行线路径绘制额外的像素而显示的

    • 对于斜率绝对值小于1的直线,可修改画线程序,上下加像素来显示粗线;大于1左右加像素

    • 段长度和中间空白段的像素数目可以用像素掩模指定, 像素掩模是包含数字0和1的字符串,用来指出沿线路径需要绘制哪些位置

    • 通过添加线帽来调整外观

      • 方帽、圆帽、突方帽
  • 线色

    • 颜色选择的数目取决于帧缓冲器中每个像素的有效值数目

曲线属性

  • 曲线属性的参数与线段相同
  • 线宽设置可以分垂直水平讨论加像素,也可平移填充

颜色和亮度等级

  • 颜色选项使用0到某一正整数之间的整数值进行编码

    • 对于CRT 监视器,颜色码被转换成电子束的强度等级。
    • 对于彩色绘图仪,编码控制喷墨范围或画笔选择。
  • 颜色信息可以通过两种方法存储在帧缓冲器中

    • 可以将颜色码直接存储在帧缓冲器中;
    • 把颜色码放在一个独立的表(颜色表)中,并使用像素值作为这个表的索引
  • 灰度等级

    • 对于不能显示彩色的监视器,颜色功能在应用程序中可以用于设置显示的元素的灰度效果,即灰度等级。使用0到1范围内的数值来指定灰度级别,然后将其转换成适当的二进制码存储在光栅中。 这样可以使所设置的亮度容易移植到具有不同灰度等级的系统中

区域填充属性

  • 填充模式

    • 区域显示有三种基本填充模式

      • 具有颜色边界的空心区域
      • 使用纯色填充的实心区域
      • 使用指定图案或设计填充的区域
  • 图案填充

  • 软填充

    • 经过修改的边界填充和泛滥填充程序,可以应用于重新绘制区域,这种使填充颜色和背景色结合的方法称为软填充或色彩填充算法。

      • 这种填充方法的一种作用是,减弱在已经模糊的对象边界上的填充颜色,从而实现对边的反走样
      • 另一种用途是允许对原来用半透明笔刷填充的颜色区域进行重新涂色。这时,当前颜色与笔刷颜色以及区域“后面”的背景色进行混合

字符属性

  • 字符的外观

    • 字体
    • 大小
    • 方向
    • 颜色
  • 字符属性

    • 文本属性

      • 字体、下划线、长宽高间距
    • 标记属性

      • 标记符号是一种单一字符,它能以不同的颜色和不同的大小进行显示。通过一个程序在所定义的位置用指定的颜色和大小将所选择的字符装入光栅,即可实现标记属性

束属性

查询函数

※反走样

  • 由于低频取样(不充分取样)而造成的信息失真称为走样

  • 可以使用校正不充分取样过程的反走样方法,来改善所显示的光栅线的外观

  • 为了避免从这种周期性对象中丢失信息,则

    • 必须把取样频率至少设置为对象中出现的最高频率的两倍,这个频率称为 取样频率 fs= 2fmax
    • 另一种说法是,取样间隔不应超过循环间隔(的一半。∆xs= ∆xcycle/2
  • 反走样方法

    • 思路:

      • 增加光栅系统取样频率

        • 增加光栅系统取样频率的一种方法是简单地以较高分辨率显示对象。但是,即使用当前技术能达到的最高分辨率,仍会在一定范围内出现锯齿形
        • 对于能显示两级以上亮度的光栅系统,可以用反走样方法来修改像素亮度。改变边界的像素亮度,来减少锯齿形
    • 过取样(后过滤)

      • 一种简单、直接的反走样方法,就是把屏幕当做比实际所具有的更细的网格,从而增加取样频率,然后根据这种更细网格,使用取样点来确定每个屏幕像素的合适亮度等级。这种在高分辨率下对对象特性取样并在较低分辨率上显示其结果的技术叫过取样(后过滤)
    • 区域取样

      • 可以代替过取样的另一种方法是,通过计算待显示的每个像素在对象上的覆盖区域,从而确定像素亮度。 计算覆盖区域的反走样称为区域取样(也称为前过滤),因为像素亮度是作为一个整体来确定的,所以不用计算子像素亮度
    • 像素移相

      • 也可以移动像素区域的显示位置而实现光栅对象的反走样,这种技术称为像素移相通过与对象几何形状相关的电子束的“微定位”而应用该技术。

5二维几何变换

※基本变换

  • 平移

    • 平移是指将对象沿直线路径从一个坐标位置移到另一个坐标位置的重定位

    • 平移是一种不产生变形而移动对象的刚体变换,即对象上的每个点移动相同数量的坐标

    • 图形平移方法

      • 直线的平移是将平移方程加到直线的每个端点上,并重绘制新的端点位置间的直线。
      • 多边形的平移是将平移向量加到每个顶点的坐标位置上,并按新的顶点坐标组和当前属性设置来生成新的多边形
    • 矩阵方程

      • [x’;y’]=[x;y]+[tx;ty]
  • 旋转

    • 二维旋转是将对象沿xy平面内的圆弧路径重定位。这种变换也可以描述为通过基准点,围绕垂直于xy平面的旋转轴旋转

    • 类似于平移,旋转是一种不变形地移动对象的刚体变换,对象上的所有点旋转相同的角度

    • 矩阵方程

      • [x’;y’]=R·[x;y] R=[cosθ -sinθ;sinθ cosθ]
  • 缩放

    • 缩放变换改变对象的尺寸。对于多边形缩放,则可以通过将每个顶点的坐标值(x,y)乘以缩放系数Sx,Sy从而产生变换的坐标(x’,y’).Sx、Sy分别控制在x方向、在y方向上的缩放

    • 固定点(Xf,Yf)缩放

      • x’=xf+(x-xf)·Sx y’=yf+(y-yf)·Sy
    • 矩阵方程

      • [x’;y’]=S·[x;y] S=[sx 0;0 sy]

※矩阵表达式和齐次坐标

  • 平移
  • 旋转
  • 缩放

※复合变换

  • 平移
  • 旋转
  • 缩放
  • 通用基准点旋转
  • 通用固定点缩放
  • 通用定向缩放
  • 连接特性
  • 通用复合变换和计算效率

※其他变换

  • 反射
  • 错切

坐标系间的变换

仿射变换

变换函数

变换的光栅方法

6二维观察

※观察流程

  • 基本概念

    • 世界坐标系中要显示的区域称为窗口

      • 如果将不同尺寸的窗口连续映射到尺寸不变的视口中,则可以得到缩放的效果。
      • 当窗口越变越小时,就可以放大场景中的某一部分,从而观察到使用较大的窗口时未显示出的细节。
      • 通过从一个场景部分开始连续地放大窗口,可以得到逐步放大的场景。
      • 通过将一个固定尺寸的窗口移过场景中不同的对象,就可以产生扫视的效果
    • 窗口映射到显示器上的区域称为视口

      • 通过改变视口的位置,我们可以在输出设备的显示区域的不同位置观察物体。我们也可以通过改变视口的尺寸来改变显示的对象的尺寸和位置
    • 窗口定义了显示的内容;而视口定义在什么位置进行显示

    • 在计算机图形学术语中,窗口最初是指要观察的图形区域。 但是,目前窗口也用于窗口管理系统,指任何可以移动、改变大小、激活和变为无效的屏幕上的矩形区域

  • 观察变换步骤

    • 1使用建模坐标变换构建世界坐标场景
    • 2将世界坐标转化为观察坐标
    • 3使用窗口-视区描述将观察坐标映射到规范化观察坐标
    • 4将规范化视区映射到设备坐标

观察参照坐标系

  • 观察参照坐标系为世界坐标系窗口提供参照系

  • 从世界坐标系位置变换到观察坐标系的矩阵可以看做两步的组合变换:

    • 首先将观察坐标系的原点移动到世界坐标系的原点,然后绕原点旋转以使两坐标系重合。

窗口到视口的坐标变换

  • 一旦对象的描述变换到观察参照坐标系下,我们就在观察坐标系下选择窗口区域以及在规范化坐标系下选定视口范围。
  • 然后,再变换到规范化的设备坐标系下。这通过一个保持对象在规范化坐标空间中有和在观察坐标系中同样的相对位置的变换来实现
  • 视口位置与缩放系数:

二维观察函数

※裁剪操作

  • 点的裁剪

    • 点(x,y)若满足Xwmin≤x≤Xwmax,Ywmin≤y≤Ywmax,则保留
  • 线段的裁剪

    • 基本思想

      • 完全在窗口之外的不要,完全在窗口之内的保留,穿过窗口的保留穿过的截线段
    • ※Cohen-Sutherland 线段剪裁算法

      • 该算法通过初始测试来减少要计算的交点数目,从而加快线段裁剪算法的计算速度。每条线段的端点都赋值为四位二进制码,称为区域码,用来标识端点相对裁剪矩形边界的位置

      • 区域码各位的值可以按下列两步进行确定:

        • 1.计算端点坐标和裁剪边界之间的差值;
        • 2.用各差值的符号位来设置区域码中相应的位置。位1设为x-xwmin的符号位;位2设为xwmax-x的符号位;位3设为y-ywmin的符号位;位4设为ywmax-y的符号位
      • 完全在窗口边界内的线段,其两个端点的区域码均为0000,因此保留这些线段。
        两个端点的区域码中,同样位置都为1的线段则完全落在裁剪矩形之外,因此丢弃这些线段

        • 两区域码and后不为0000则全部丢弃,相or后为0000则全部保留
      • 对于不能判断为完全在窗口外或窗口内的线段,则要计算与窗口边界的交点(传统技能)

    • 梁友栋-Barsky 线段裁剪算法

      • 参考附件
      • 更快速的线段裁剪算法基于分析线段的参数化方程,可以将直线写成下列形式:
      • 首先按参数化形式写出(6.5)式的裁剪条件:
      • 任何平行于裁剪边界之一的直线pk=0,其中k 对应于该裁剪边界(k=1、2、3、4对应于左、右、下、上边界)。如果还满足qk<0,则线段完全在边界以外,舍弃该线段。如果qk>=0,则线段平行于裁剪边界并且位于窗口内。
      • 当 pk<0 时,线段从裁剪边界延长线的外部延伸到内部。当 pk>0 ,线段从裁剪边界延长线的内部延伸到外部。当 pk不等于0时,可以计算出线段与边界k的延长线的交点u值。
        u=qk/pk
        计算每条直线的u1、u2,定义了在裁减矩形内的线段部分。
    • Nicholl-Lee-Nicholl 线段裁剪算法

  • 多边形的裁剪

    • 划分凹多边形

      • 通过绕多边形的周长计算相邻边向量的叉乘,可以识别出凹多边形。
      • 如果一些叉积结果的 z 分量为正,而另一些 z 分量为负,则该多边形为凹多边形。否则为凸多边形。
      • 必须假定没有三个相邻的顶点是共线的,因为三点共线的情况下,这两个相邻的边向量的叉积结果为零
      • 简而言之就是只要有一个凹点就是凹多边形
    • 多边形裁剪后的输出应该是定义裁剪后的多边形的顶点序列

    • Sutherland-Hodgeman 多边形裁剪

      • ※在将相邻的一对多边形顶点传到窗口的边界裁剪程序时,进行下列测试

        • 如果第一点在窗口边界外而第二点在窗口边界内,则将多边形的这条边与窗口边界的交点和第二点加到输出顶点表中。
        • 如果两个顶点都在窗口边界内,则只有第二点加到输出顶点表中。
        • 如果第一点在窗口边界内而第二点在窗口外,则只有与窗口边界的交点加到输出顶点表中。
        • 如果两个点都在窗口边界外,那么输出顶点表中不增加任何点。
        • 简而言之就是交点必须加,内部点是第二点时才加,外点都不加
      • 该算法处理凹多边形时不太行,改进办法:

        • 一种方法是将凹多边形分割成两个或者更多的凸多边形,然后分别处理各个凸多边形。
        • 另一种方法是修改 Sutherland-Hodgeman 算法,沿着任何一个裁剪窗口边界检查顶点表,从而正确地连接顶点对。
        • 还有一种方法是可以使用更一般的多边形裁剪算法,例如下面介绍的 Weiler-Atherton 算法或Weiler 算法
    • ※Weiler-Atherton 算法

      • 基本思想

        • 有时沿着多边形某一边的方向来处理顶点,有时沿着窗口的边界方向进行处理

        • 采用哪一条路径,要根据多边形处理方向(顺时针或逆时针),以及当前处理的多边形顶点对是由外到内还是由内到外。如果顺时针处理顶点,则采用下列规则:

          • 对由外到内的顶点对,沿着多边形边界的方向。
          • 对由内到外的顶点对,按顺时针沿着窗口边界的方向。
      • 算法步骤

        • 1.求出主多边形和裁剪多边形的交点:

          • 将交点加入到主多边形和裁剪多边形的顶点表中,并注以标记。对同一交点,在主多边形和裁剪多边形间建立双向链接
        • 2.建立两类交点表

          • 其一为进点表,它仅包含主多边形边进入裁剪多边形内部时的交点。另一个是出点表,它包含主多边形边离开裁剪多边形内部时的交点。沿着多边形边界,两类交点将交替出现。因此对于每一对交点,只需进行一次类型判别就够了。
        • 3.进行裁剪

          • 若交点表为空,则处理结束。否则从进点表中取一个点。
          • 跟踪主多边形顶点表,直至遇到下一个交点。复制这一段主多边形顶点表并记入内表中。
          • 根据交点间的链接,转到裁剪多边形顶点表中的相应位置。
          • 跟踪裁剪多边形顶点表,直至遇到下一个交点。复制这一段裁剪多边形顶点表并记入内表中。
          • 根据交点间的链接,再转回主多边形顶点表。
          • 重复上述过程,直至回到起始交点处。至此所得的位于裁剪多边形内的新多边形已经封闭。
      • PPT例图操作下即可

  • 曲线的裁剪

    • 类似多边形,但方程复杂要更多的处理
  • 文字的裁剪

    • 使用窗口边界处理字符串的最简单的方法,是全部保留或全部舍弃字符串的裁剪策略。如果字符串中的所有字符都在裁剪窗口内,那么就全部保留这些内容,否则舍弃整个字符串
    • 对于裁减与窗口边界相重叠的字符串的另一种方法是,可以使用全部保留或全部舍弃一个字符的裁剪策略。对于没有完全落在窗口内的字符应该舍弃。
    • 最后一种处理方法是对各个字符本身进行裁剪,使用线段裁剪的方法对字符进行裁剪。如果一个字符与裁剪窗口边界有重叠,则裁剪掉位于窗口之外的字符部分
    • 简而言之就是:1舍去整个字符串2舍去单个字符3对单个字符按线段裁剪
  • 外部裁剪

    • 看表

7结构和层次建模

不考

8图形用户界面和交互输入方法

用户对话

  • 用户模型是设计对话的基础

    • 用户模型说明所设计的系统能做什么,应具备什么样的图形操作。这种模型指明了可以显示的对象类型以及如何管理对象
  • 在构造用户对话时,一般应注意的情况:

    • 窗口和图符

      • 窗口系统的一般功能有打开和关闭窗口、对窗口重定位、缩放功能以及具有内部裁剪和外部裁剪的显示等。 一个典型的窗口中包含滑动条、按键、菜单和图符等用于选择各种窗口操作
      • 应用图符、控制(命令)图符
    • 适应多种熟练程度的用户

      • 顾名思义,键盘->鼠标->触屏
    • 一致性

      • 一个图符一种含义
    • 减少记忆量

      • 界面的操作应该组织的容易理解和记忆
    • 回退和出错处理

      • 撤销和报错功能
    • 反馈

      • 通常应提供足够清晰的反馈信息,从而使其不易被忽略,但也不能过分突出反馈信息以至于影响用户的注意力
      • 如将用户输入显示在屏幕上

图形数据的输入

  • PHIGS 和GKS 把各种输入数据概括成以下六种逻辑输入设备分类

    • 指定坐标位置(x, y)的设备(定位设备)
    • 指定一组坐标位置的设备(笔划设备)
    • 指定文字输入的设备(字符串设备)
    • 指定标量值的设备(定值设备)
    • 选择菜单项的设备(选择设备)
    • 选择图形的组成部分的设备(拾取设备)

输入功能

  • 通过设定输入功能。用户可指定以下选项

    • 使用哪一种物理设备为特定逻辑分类提供输入。
    • 图形程序和设备如何进行交互 。
    • 何时输入数据,使用哪一种设备在输入时将特定数据类型传递到指定的数据变量中。
  • 输入模式

    • 提供输入的函数可以按多种输入模式进行组织。每种模式分别指明程序如何与输入设备交互

      • 请求模式

        • 在请求模式中,由应用程序启动数据输入。程序和输入设备交替工作,设备处于等待状态直到提出输入请求,然后程序处于等待状态直到收到数据
      • 取样模式

        • 在取样模式下,应用程序和输入设备各自独立地操作。当程序需要一个新数据时,就从输入设备取得当前值。
      • 事件模式

        • 在事件模式下,输入设备启动数据输入并交给应用程序。所有输入数据均存储起来。当程序需要一个新数据时,就从输入队列中取得。

输入设备参数的初值

交互式构图技术

  • 图形软件包中的一些技术可以帮助进行交互式构图

    • 基本的定位方法

      • 可以使用一个定点设备来交互式地选择坐标位置,一般是通过定位屏幕光标
    • 约束

    • 网格

    • 引力场

    • 橡皮条方法

    • 拖曳

    • 着色和绘图

虚拟现实环境

9三维概念

三维显示方法

  • 为了获得在世界坐标中已经建模的三维场景的显示,首先必须建立用于“相机”的坐标参考 。
    这个坐标参考是指相机胶卷平面的位置和方向,我们在该胶卷平面上显示场景中物体的视图 。

  • 平行投影

    • 将物体表面上的点沿平行线投影到显示平面上
  • 透视投影

    • 沿会聚路径将点投影到显示平面上(眼睛和相机、更真实)
  • 深度提示

    • 根据它们离观察位置的距离来改变物体的亮度
  • 可见线面的标识

    • 不同颜色、线型等
  • 表面绘制

    • 表面绘制方法与透视及可见面识别相组合,产生了显示的场景中某种程度的真实性
  • 分解图和剖面图

  • 三维和立体视图

    • 使用三维视图显示物体、左右眼各一张图

三维图形软件包

  • 三维和二维软件包之间一个明显的差别在于:三维软件包必须能将场景描述映射到观察平面上

12三维观察

观察流水线

  • 类似于拍一张照片的过程
  • 模型坐标(模型变换)->世界坐标(观察变换)->观察坐标(投影变换)->投影坐标(工作站变换)->设备坐标

投影

  • 两种基本的投影方式

    • 在平行投影中,坐标位置沿平行线变换到观察平面上。

      • 平行投影保持物体的有关比例不变,这是三维物体绘图中产生成比例图画的方法
    • 对于透视投影,物体位置沿收敛于某一点的直线变换到观察平面上,该点称为投影参考点。

      • 透视投影生成真实感视图,但不保持相关比例
  • 平行投影

    • 当投影垂直于观察平面时,得到正平行投影。否则,得到斜平行投影

      • 正投影

        • 正投影多数用于产生物体的前视图、侧视图和顶视图
        • 能形成显示物体多个侧面的正投影,也称为轴测正投影。最常用的轴测投影是等轴测投影
      • 斜投影

        • 斜投影向量有两个角α和φ给定
        • 角 φ 通常选择为30°或45°,从而显示出物体的前面、侧面和顶面的联合视图
        • 当 tan α =1时,所得视图称为斜等测投影。所有与投影平面垂直的直线在投影中的长度保持不变。
        • 当 tan α =2时,所生成视图称为斜二测投影。与观察面垂直的线投影成一半长度。 它比斜等测投影更显得真实
  • 透视投影

    • 当三维物体利用透视变换方程投影到观察平面上时,物体中不与观察平面平行的任意一组平行线投影成收敛线,与观察平面平行的平行线仍投影成平行线
    • 一组平行线投影后收敛于一点,此点称为灭点。物体中平行于某一坐标轴的平行线的灭点称为主灭点。可以利用投影平面的方向控制主灭点数目,投影中主灭点数目由与观察平面相交的主轴数目确定

观察体和一般投影变换

  • 观察体

    • 观察体的大小依赖于窗口的大小,而观察体的形状依赖于生成显示结果的投影类型
    • 正平行投影不受观察平面位置的影响 。
      斜投影可能受观察平面位置的影响,取决于如何给其指定投影方向。透视效果取决于投影参考点与观察平面的位置,透视投影大小也受此影响。
  • 一般投影变换

    • 一般平行投影变换

      • 正投影错切得到斜投影
    • 一般透视投影变换

      • 错切观察体使得棱台的中心线垂直于观察平面;
      • 使用相应的 1/z 缩放因子缩放观察体。

13可见面判别算法

可见面判别算法的分类

  • 可见面判别算法的分类,通常是根据其处理场景时是直接对物体定义进行处理还是处理它们的投影图像

  • 物空间法

    • 将场景中的各物体和物体的各个组成部分相互进行比较,从而最终判别出哪些面是可见的
  • 像空间法

    • 在投影平面上逐点判断各像素所对应的可见面

后向面判别

  • 假设有一点(x , y , z )和一个平面参数为A,B ,C,D 的多边形面,如果:Ax+By+Cz + D < 0
    则该点在多边形的“内”侧。若一内点位于视点到一多边形面之间的直线上,则该多边形必为后向面(我们位于该面的内侧,从观察位置无法看到其正面)
  • 可以用平面法向量点乘观察向量,结果大于0则该平面为后向面

深度缓冲器算法

  • 属于像空间算法。其基本思想是,对投影平面上每个像素所对应的表面深度进行比较。

  • 由于通常沿着观察系统的z轴来计算各物体距观察平面的深度,因此上述算法也称为z缓冲器算法。该算法对场景中的各个物体表面单独进行处理,且在表面上逐点进行

  • 具体步骤

    • 先将Z缓冲器中各单元的初始值置为最小值。
      当 要改变某个像素的颜色值时,首先检查当前多边形的深度值是否大于该像素原来的深度值(保存在该像素所对应的Z 缓冲器的单元中)
      如果大于原来的z值,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色
    • 注意观察向量指向z轴负方向
  • 缺点

    • 只能处理非透明表面

A缓冲器算法

  • A 缓冲器算法对深度缓冲器进行了扩充,使其每一个位置均对应于一个表面链表

  • A 缓冲器中每个单元均包含两个域

    • 深度域― 存储一个正的或负的实数;
    • 强度域― 存储表面的强度信息或指针值
  • 若深度域值为正,则该值表示覆盖该像素点的惟一表面的深度,强度域中存储该表面上该点颜色的RGB 分量和像素覆盖率。
    若深度域值为负,则表示多个面共同对该像素点产生影响。强度域存储一个表面数据链表的指针,列表中表面的数据项包括各项具体参数

扫描线算法

  • 是像空间的隐面消除算法,是多边形区域填充中扫描线算法的延伸。此处,处理的是多个表面,而非填充单个多边形面。
  • 逐条处理各条扫描线时,首先要判别与其相交的所有表面的可见性,然后计算各重叠表面的深度值以找到离观察平面最近的表面。一旦确定了某像素点所对应的可见面,可以得到该点的强度值,并将其置入刷新缓冲器

深度排序算法

  • 深度排序算法同时运用物空间与像空间操作,以实现以下基本功能:表面按深度递减方向排序。由深度最大的表面开始,逐个对表面进行扫描转换
  • 排序操作同时在像空间和物空间完成,而多边形面的扫描转换仅在像空间完成
  • 采用同样的技术,首先将表面根据它们与观察平面的距离排序,然后在刷新缓冲器中置入最远处表面的强度值,接着按深度递减顺序逐个选取后继表面,并将其属性值“涂”在帧缓冲器上,覆盖了部分前面处理过的表面。

BSP树算法

  • 该算法类似于画家算法,适用于场景中物体位置固定不变、仅视点移动的情况
  • 主要操作是在每次分割空间时,判别该表面相对于视点与分割平面的位置关系,即位于其内侧还是外侧

区域细分算法

  • 区域细分算法虽然本质上是一种像空间算法,但使用了一些物空间操作来完成表面的深度排序
  • 该算法充分利用场景中区域的连贯性,将视野集中于包含表面的区域;并将整个观察范围细分为越来越小的矩形单元,直至每个单元仅包含单个可见表面的投影或不含任何表面。

八叉树算法

  • 当按照八叉树表示来描述观察体时,通常按由前往后的顺序将八叉树节点映射到观察表面,从而消除隐藏面
  • 一种显示八叉树的算法是:首先递归地由前往后遍历八叉树节点,将八叉树映射为可见区域的四叉树;然后将可见面的四叉树表示置入帧缓冲器中。

光线投射算法

  • 光线投射算法可以看做是深度缓冲器算法)的一种变形
  • 在光线投射算法中,每次处理一个像素,并沿光线的投射路径计算出该像素所对应的所有表面的深度值

曲面

  • 对于曲面物体,最有效的可见性判别算法为光线投射算法和八叉树算法
  • 常常利用一组多边形表面来近似表示曲面

线框算法

  • 确定物体边框可见性的过程通常称为线框可见性算法,也称为可见线判别算法或隐线判别算法。
  • 判别场景中可见线的最直接算法是,依次将每条边与各个面进行比较
  • 需要算深度,一种是完全在表面后(所有线段点深度均比表面大)一种是穿过表面(一侧大一侧小)

可见性判别函数

15颜色模型和颜色应用

XYZ 颜色模型

  • 任何一种颜色 Cλ 可以表示成:Cλ =xX+yY+zZ其中 x, y, z 指出为匹配 Cλ 所需的标准基色的量。

RGB 颜色模型

  • Cλ =RR+GG+BB

YIQ 颜色模型

  • YIQ颜色模型是形成组合视频信号的NTSC颜色模型

CMY 颜色模型

  • 使用基色的青色、品红和黄色定义的颜色模型(CMY),用来描述向硬拷贝设备上输出的颜色
  • [C;M;Y]=[1;1;1]-[R;G;B]

HSV 颜色模型

  • 用户需要选择一种光谱色并加入一定量白色和黑色来获得不同的明暗、色泽和色调。这个模型中的颜色参数是色彩(H),明度值(V),色饱和度(S)

HLS 颜色模型

  • 该模型中的三个参数称为色彩(H),亮度(L) 和饱和度(S)

计算机图形学复习笔记相关推荐

  1. 计算机图形学求亮度级别数,计算机图形学复习笔记

    计算机图形复习笔记 1 .输入设备:鼠标.键盘.轨迹球和空格键.操纵杆.数据手套.数字化仪.图形扫描仪.触摸屏.触针.声音系统. 2 .硬拷贝设备: 35mm幻灯片.胶片.打印机(冲击式.非冲击式). ...

  2. 计算机控制系统笔记,计算机控制系统复习笔记.doc

    计算机控制系统复习笔记 选择填空: 1 计算机控制系统由工业控制计算机主体(包括硬件.软件与网络结构)及其输入输出通道和被控对象(工业生产对象(被控对象.工业自动化仪表)).两大部分组成.自动控制系统 ...

  3. GAMES101-现代计算机图形学学习笔记(作业07)

    GAMES101-现代计算机图形学学习笔记(作业07) Assignment 07 GAMES101-现代计算机图形学学习笔记(作业07) 作业 作业描述 思路 结果 原课程视频链接以及官网 b站视频 ...

  4. 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等

    接上文 计算机图形学 学习笔记(六):消隐算法:Z-buffer,区间扫描线,Warnock,光栅图形学小结 在图形学中,有两大基本工具:向量分析,图形变换.本文将重点讲解向量和二维图形的变换. 5. ...

  5. GAMES101-现代计算机图形学学习笔记(作业02)

    GAMES101-现代计算机图形学学习笔记(作业02) Assignment 02 GAMES101-现代计算机图形学学习笔记(作业02) 作业 作业描述 需要补充的函数 思路 结果 原课程视频链接以 ...

  6. GAMES101-现代计算机图形学学习笔记(作业01)

    GAMES101-现代计算机图形学学习笔记(作业01) Assignment 01 GAMES101-现代计算机图形学学习笔记(作业01) 作业 作业描述 需要补充的函数 思路 结果 原课程视频链接以 ...

  7. 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影)

    接上文 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等 通过三维图形变换,可由简单图形得到复杂图形,三维图形变化则分为三维几何变换和投影变换. 6.1 三维图形几何变换 三维 ...

  8. 自考知识点计算机组成原理,自考计算机组成原理复习笔记

    计算机组成原理复习笔记 1.5. 冯•诺依曼计算机的特点是什么? 解:冯•诺依曼计算机的特点是:P8 计算机由运算器.控制器.存储器.输入设备.输出设备五大部件组成: 指令和数据以同同等地位存放于存储 ...

  9. 计算机图形学 学习笔记(五):多边形裁剪(Suther land-Hodgeman),文字裁剪

    接上文 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky 光栅图形学算法 3.4 多边形裁剪 之前上一篇文章中,我们介绍了直线段的裁 ...

  10. 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky

    接上文 计算机图形学 学习笔记(三):多边形的区域填充算法,反走样算法 光栅图形学算法 本文主要讲解直线裁剪算法. 裁剪 使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的知识图形 ...

最新文章

  1. win2008WEB服务器集群实践(转)
  2. python培训出来的有公司要吗-Python培训讲师靠谱吗
  3. 新东方王强老师的感悟
  4. Windows phone7 开发-Zune software is not launched 【转】
  5. 双曲函数奇偶性_基本初等函数之奇偶性(强基系列42)
  6. 厉害了!春节不打烊年货30分钟即买即送 饿了么新上线650多家超市
  7. 小程序使用echarts
  8. win98老机子安装linux,在win98下怎么安装linux?
  9. 专业破解各种版本的IDEA
  10. OpenJudge NOI题库 116题
  11. 大数据告诉你——垃圾围城,现行的垃圾分类制度,作用到底能有多大?
  12. win8删除计算机管理员权限,win8.1系统如何删除administrator账户
  13. Ai-WB2模组基于TCP的MQTT连接服务器使用示例
  14. 【面试题】:工人分金条问题
  15. 陶云机器人_小帅智能机器人app
  16. 解决自己的小问题sizeof(ages) / sizeof(ages[0])是干嘛的
  17. 8.Spring Boot中使用thymeleaf
  18. mysql删去root用户无法登录_MySQL误删root用户导致无法登陆解决方法
  19. 【计算机网络】数据链路层(完整版)
  20. 如何买入期货合约(如何买入期货合约交易)

热门文章

  1. 程序猿转行为什么这么难
  2. 用Python做的小游戏合集来咯~自行开发一个星际争霸小游戏~
  3. Codeforces1221 C. Perfect Team
  4. Docker(八)Container无法正常启动Restarting (1) Less than a second ago的原因及解决办法
  5. mysql sp print_mysql 存储过程 print
  6. Only the original thread that created a view hierarchy can touch its views. 是怎么产生的
  7. 彻底理解confidence interval和credible interval
  8. 《计算机网络》day01-网络的诞生和发展
  9. linux ps1 配色,bashrc - PS1(提示符配色)
  10. ca 手机抓包_抓包安卓7以上ca证书安装方法