Ch01

ZhuYuanxiang 2021-08-26 09:40:29
Categories: Tags:

Ch01

引言

计算机图形学(Computer Graphics)是利用计算机技术创建和处理图像的理论、方法和技术。

1.1 图形学领域

1.2 主要应用

1.3 图形学 API

应用程序接口(API):是一种软件接口,为应用程序访问系统功能提供了一种模型。

当前主要的两种 API 模式:

1.4 三维几何模型

一般的三维几何模型:球、立方体、圆锥、多边形等基本数学形状。最常用的模型由三维三角形组成,这些三角形共享顶点,常被称作三角形网格。

1.5 图形流水线

三维图形流水线(Graphic Pipline):是特别的软硬件子系统,能够高效给出透视图中的三维图元。

流水线的基本运算是把三维顶点位置映射到二维屏幕位置,并且对三角形进行明暗处理,使它们看起来比较真实,并且按照适当的前后层次显示。

前后层次绘制三角形的常用方法:通过 Z 缓冲器技术解决,利用特殊的存储缓冲区解决了蛮力算法中存在的问题

图形流水线中的几何运算,可以在四维坐标空间中实现。四维坐标由一般的三维几何坐标和利于处理透视问题的第4维齐次坐标组成。这些四维坐标主要用于 $4\times 4$ 的矩阵和四维向量。因此图形流水线中包含很多对矩阵和向量进行高效处理和组合运算的机制。

在表示模型时要采用不同的细节等级(LOD)。

1.6 数值问题

IEEE浮点标准(IEEE Standardss Association, 1985)中的三个「特殊值」:

常用的计算公式:
$$
\begin{align*}
\infty+\infty&=+\infty\
\infty-\infty&=\text{NaN}\
\infty\times\infty&=\infty\
\infty/\infty&=\text{NaN}\
\infty/a&=\infty\
\infty/0&=\infty\
0/0&=\text{NaN}\
+a/+0&=+\infty, a>0\
-a/+0&=-\infty, a>0
\end{align*}
$$
布尔表达式规则:

  1. 所有有限的有效数都小于 $+\infty$
  2. 所有有限的有效数都大于 $-\infty$
  3. $-\infty$ 小于 $+\infty$
  4. 任何包含 NaN 的算术表达式,结果都是 NaN
  5. 任何包含 NaN 的布尔表达式,结果都为假

1.7 效率

效率是对各个方面进行认真权衡后得到的,而权衡的标准随着系统体系结构的不同而不同。

优化的步骤:

  1. 以最直接的方式编写代码,尽量直接计算数据而不存储它
  2. 在优化模式下编译
  3. 使用性能分析软件找到系统瓶颈
  4. 检查数据结构,找出调整数据位置的方法
  5. 重写源代码解决性能分析时发现的问题

1.8 软件工程

图形程序的关键是针对几何实体(向量和矩阵)、图形实体(RGB颜色和图像)都具有较好的类和例程。常见的基本类:

1.8.1 单精度和双精度

减少内存使用,并且保持一致的内存存取是提高效率的关键。

1.8.2 内联

内联是实用类(如 RGB)提高效率的关键。

1.8.3 成员函数与非成员运算符

复杂的大数据量计算建议声明在类的外部,定义这种运算时,代码越简洁越好。参数传递尽量使用 const 引用形式。

1.8.4 包含保护符

所有类声明都应该具有包含保护符(include guard)。

1.8.5 编译调试

在代码中应该包含很多断言(assert)宏。

1.8.6 实验性调试

最难发现的错误都是概念上的错误,即实现的目标错了。