1.ISO公布的图形标准
三种类型的计算机图形软件系统
(1)用某种语言写成的子程序包:
GKS (Graphics Kernel System)
PHIGS(Programmer’sHerarchical Iuteractive Graphics system )
GL
便于移植和推广、但执行速度相对较慢,效率低
(2)扩充计算机语言,使其具有图形生成和处理的功能
如:Turbo C,AutoLisp等。
简练、紧凑、执行速度快,但不可移植
(3)专用图形系统:效率高,但系统开发量大,可移植性差。
2.缓存计算
显存容量问题
分辨率M*N、颜色个数K与显存容量V的关系
3.Cohen–Sutherland算法
算法步骤:
(1)第一步: 判别线段两端点是否都落在窗口内,如果是,则线段完全可见;否则进入第二步;
(2)第二步 判别线段是否为显然不可见,如果是,则裁剪结束;否则进行第三步;
(3)第三步 求线段与窗口边延长线的交点,这个交点将线段分为两段,其中一段显然不可见,丢弃。对余下的另一段重新进行第一步,第二步判断,直至结束
特点:
用编码方法可快速判断线段的完全可见和显然不可见。
特别适用二种场合:大窗口场合 ,窗口特别小的场合
编码方法:
由窗口四条边所在直线把二维平面分成9个区域,每个区域赋予一个四位编码,CtCbCrCl,上下右左;
端点编码:
定义为它所在区域的编码
结论:
当线段的两个端点的编码的逻辑“与”非零时 ,显然不可见
求交:
对于那些非完全可见、又非完全不可见的线段,需要 求交,求交前先测试与窗口哪条边所在直线有交? (按序判断端点编码中各位的值ClCtCrCb)
求交测试顺序固定(左上右下) 最坏情形,线段求交四次。
4.光照模型中的漫反射和镜面反射概念(第九章)
书上有
5.汉字字库
由美国Apple和Microsoft公司联合开发的TrueType字型技术就是一种轮廓字型技术,已被用于为Windows中文版生成汉字字库。
6.颜色模型
为了实现图形的绘制,颜色系统有多种构造形式。RGB(红、绿、蓝)、颜色查询表(Color Lookup Table)、CMYK(青、品红、黄、黑:主要用在打印和印刷领域,激光打印机一般用CMYK, 但喷墨打印机颜色细分很多,有的达到十几色,这是为了提高颜色精度。 )、HSV(色彩、饱和度、亮度:主要用在图像编辑工具)
(1)NTSC模型
一种用于电视图像的颜色模型。NTSC模型使用的是YIQ色彩坐标系,其中Y为光亮度,I为色调,Q为饱和度。
(2)YCbCr模型(视频图像和数字图像中常用的色彩模型。)
YCbCr是DVD、摄像机、数字电视等消费类视频产品中,常用的色彩编码方案。YCbCr不是一种绝对色彩空间,是YUV压缩和偏移的版本。YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。
(3)YUV颜色模型
在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD(电荷耦合器件)摄像机
(4)HSL颜色模型、 HSB颜色模型、 Ycc颜色模型、 XYZ颜色模型、等 Lab 颜色模型
7.DDA、中点、Bresenham画线算法
(1)DDA画直线
(2)中点画线法
注意斜率不在[0,1]的直线的处理
(3)Bresenham画直线
8.边相关算法、EAT表
在计算机图形学中,边相关算法是用来进行多边形填充的算法之一。边相关算法通常通过使用边表(Edge Table,简称ET)和活性边表(Active Edge Table,简称AET)来实现,这里简要介绍一下它们的工作原理和过程。
边表(ET)
边表记录多边形所有边的信息,主要包括:
- 每条边的起始顶点和终止顶点的坐标。
- 边的斜率倒数(用于计算边与扫描线的交点)。
- 边的最大y值(用于确定何时删除该边)。
活性边表(AET)
活性边表是对每条扫描线动态维护的一个边表,包含当前扫描线与多边形边的交点信息。AET中包含的信息有:
- 当前扫描线与边的交点x坐标。
- 从当前扫描线到下一条扫描线之间的x增量(由斜率倒数决定)。
- 边所交的最高扫描线号ymax。
边相关算法的步骤
- 初始化ET:将多边形所有边信息插入到边表中,并按y坐标排序。
- 初始化AET:活性边表初始化为空。
- 处理每一条扫描线:
- 从ET中取出当前扫描线的所有边,加入AET,并按x坐标排序。
- 在扫描线上,根据AET提供的x坐标对填充多边形的区间。
- 更新AET,删除y=ymax的边。
- 计算下一条扫描线的交点x值,并排序AET。
9.设备的分类
1. 图形输入设备
这些设备用于将数据输入到计算机图形系统中,包括:
- 键盘:最常见的输入设备,用于输入字符和命令。
- 鼠标:用于在屏幕上定位和选择。
- 数字化仪:将物理图形转换为数字形式,常用于工程图的输入。
- 光笔:用于直接在屏幕上进行选择和输入。
- 扫描仪:将图像和文档数字化,按像素存储图像信息。
- 触摸屏:允许用户通过手指直接与屏幕进行交互。
- 操纵杆、跟踪球:用于将位移量转换成屏幕光标移动。
- 三维输入设备:如数据手套、三维鼠标等,用于虚拟环境的交互。
2. 图形输出设备
这些设备用于将计算机处理后的图形输出显示出来,包括:
- 显示器:如CRT(阴极射线管显示器)和LCD(液晶显示器)。
- CRT:包括单色和彩色显示器,利用电子束轰击荧光屏产生图像。
- LCD:通过液晶层的光线调制显示图像。
- 绘图仪:用于高精度的图形输出,主要有笔绘式、喷墨式和静电式。
- 笔绘式绘图仪:分为平台式、滚筒式、平面电机式和小型式。
- 打印机:将数字图像转换成纸质输出,包括点阵打印机(针打、喷墨、热转换等)和激光打印机。
- 大幅面打印机:用于输出大尺寸的图像和图纸。
3. 交互式设备
这些设备用于增强人与计算机之间的交互性,包括:
- 数据手套:用于虚拟环境中抓取虚拟对象,检测手和手指的运动。
- 声音系统:通过语音识别技术将语音转换为计算机指令,用于语音命令输入。
- 摄像头:用于捕捉和输入实时视频图像。
4. 未来显示设备
这些设备采用最新技术,具有更好的显示效果和功能,包括:
- 发光聚合物显示器:柔韧性好,可以卷起来,具有高分辨率和清晰度。
- 空气等离子体显示器:采用空气等离子体技术,屏幕薄,分辨率高,无需刷新缓存,重量轻。
图形显示设备
- CRT显示器:包括单色和彩色CRT显示器,利用电子束在荧光屏上形成图像。
- 液晶显示器(LCD):通过液晶层的光线调制显示图像。
- 等离子显示器:采用等离子技术,适用于大尺寸高分辨率显示。
10.Weiler–Atherton算法
Weiler–Atherton算法
Weiler–Atherton算法主要用于多边形裁剪。其核心思想是通过判断多边形顶点和裁剪窗口的交点,将多边形分割并重新组合,从而得到裁剪后的多边形。步骤如下:
-
顶点分类:将多边形的顶点分为内部顶点和外部顶点。
-
求交点:计算多边形边与窗口边的交点。
-
重组多边形:
- 从内部顶点开始,沿多边形边遍历,遇到交点时切换到窗口边,继续沿窗口边遍历,直到再次遇到交点。
- 重复上述步骤,直至遍历完整个多边形,得到所有裁剪后的多边形。
特点:
- 能处理复杂多边形,包括凹多边形。
- 裁剪结果多为一个或多个闭合多边形。
11.计算机图形学的概念
定义:计算机图形学就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法
12.如何实现彩色图形的显示
1. 色彩模型
首先,需要了解常用的色彩模型,包括RGB模型和CMY模型。
RGB模型
- RGB模型是基于光的三原色(红、绿、蓝)来表示颜色。
- 颜色通过调节这三种光的强度混合而成。
- 常用于显示器、电视等发光设备。
CMY模型
- CMY模型(青、品红、黄)是基于颜料的三原色,用于印刷和绘图设备。
- 颜色通过减色法,即通过吸收特定波长的光来形成。
2. 显示设备
彩色图形的显示主要依赖于显示设备,如CRT显示器和液晶显示器(LCD)。
CRT显示器
- CRT显示器利用三束电子枪分别激发荧光屏上的红、绿、蓝三色磷光粉。
- 每个像素由红、绿、蓝三种磷光粉点组成,通过控制电子束的强度来混合显示各种颜色。
液晶显示器(LCD)
- LCD通过背光源发光,通过液晶层和RGB滤色片来显示颜色。
- 每个像素由红、绿、蓝三个子像素组成,通过调节液晶层的电压来控制每个子像素的透光量,从而混合成不同颜色。
3. 显存与帧缓冲区
彩色图形显示还需要依赖显存(视频内存)和帧缓冲区。
- 显存:存储图像的颜色数据,每个像素通常由24位(8位红色、8位绿色、8位蓝色)表示。
- 帧缓冲区:存储当前显示的帧的数据,通过显卡将帧缓冲区的数据转换为显示信号输出到显示设备。
4. 显卡与GPU
显卡(图形处理单元,GPU)在彩色图形显示中起着关键作用。
- GPU:处理复杂的图形运算和颜色计算,将图形数据转换为显示设备可识别的信号。
- 显卡驱动:控制显卡的工作,将操作系统和应用程序的图形命令转化为硬件指令。
5. 软件支持
为了实现彩色图形的显示,还需要软件支持,如操作系统的图形接口和应用程序。
- 操作系统:提供图形库和API(如Windows的GDI,OpenGL,DirectX)帮助开发者实现彩色图形的显示。
- 应用程序:使用这些图形库和API进行图形绘制、渲染和显示。
详细步骤
- 定义色彩模型:选择合适的色彩模型(如RGB模型)。
- 创建图形数据:通过软件生成图形数据,定义每个像素的颜色值。
- 加载图形数据到显存:将图形数据传输到显存中。
- 渲染图形:显卡(GPU)读取显存中的数据,并进行渲染处理。
- 输出到显示设备:渲染后的数据通过显卡输出到显示设备上,显示彩色图形。
13.I/O设备有哪些
输入设备
- 键盘
- 鼠标
- 数字化仪
- 光笔
- 扫描仪
- 操纵杆
- 跟踪球
- 触摸屏
- 三维输入设备
- 三维鼠标
- 空间球
- 数据手套
- 数据衣
- 语音系统
- 摄像头
输出设备
- 显示器
- 阴极射线管显示器(CRT)
- 液晶显示器(LCD)
- 绘图仪
- 笔绘式
- 喷墨式
- 静电式
- 打印机
14.种子填充
种子填充算法在计算机图形学中用于填充多边形区域。该算法依赖于一个已知的种子像素,通过递归或迭代的方法逐步填充与种子像素相连的所有像素。PPT中详细介绍了种子填充算法的几种不同实现,包括4连通和8连通方式。以下是详细解释:
基本概念
- 种子像素:种子填充算法的起点,通常是已知在多边形区域内的一个像素。
- 边界定义法:定义填充区域边界的方法,主要有区域定义法(Interior-defined)和边界定义法(Boundary-defined)。
- 连通性:决定填充的方式,4连通(4-connected)和8连通(8-connected)是最常用的两种方式。
4连通边界填充算法
4连通边界填充算法是一种较为简单的实现方式,具体步骤如下:
- 将种子像素入栈。
- 当栈非空时,执行以下步骤:
- 栈顶像素出栈,并将该像素置为填充色。
- 检查该像素的四个相邻像素(左、上、右、下)。若某相邻像素不在边界上且未被填充,则将其入栈。
-
8连通边界填充算法
与4连通算法类似,但检查像素时增加了对角线方向的四个像素(左上、右上、左下、右下),以填充更加连贯的区域。
扫描线种子填充算法
扫描线种子填充算法利用扫描线的连贯性来减少递归次数。具体步骤如下:
- 种子像素入栈。
- 当栈非空时,执行以下步骤:
- 栈顶像素出栈,并沿扫描线方向填充左右像素,直到遇到边界像素。
- 将上述区间内最左、最右像素记为xl和xr。
- 在区间[xl, xr]中检查与当前扫描线相邻的上下两条扫描线,若有非边界且未填充的像素,则将其最右像素取为种子像素入栈。
-
该算法的优点是通过减少递归次数,提高了效率。
算法缺点
- 递归实现可能导致栈溢出,特别是在填充大面积区域时。
- 对复杂图形,每个像素可能被多次访问,效率较低。
-
通过以上内容可以看出,种子填充算法在计算机图形学中是一种重要的区域填充技术,主要用于多边形和其他封闭图形区域的填充 。
15.多边形裁剪
两个算法:Sutherland-Hodgman算法(PPT),还有一个 Weiler–Atherton算法 为考点,在下面。
16.齐次坐标的概念及优点
17.Bezier、B样条线性质
Bezier曲线的性质
-
端点性质: Bezier曲线通过其控制多边形的第一个控制点 𝑃0P0 和最后一个控制点 𝑃𝑛Pn,即曲线的端点位置由这两个控制点确定。
-
端点切矢量: 对于三次Bezier曲线,起始点和终点的切线方向与控制多边形的第一条边和最后一条边的方向一致。
-
凸包性质: Bezier曲线始终位于其控制顶点的凸包之内。这意味着,曲线不会超出由控制点所形成的凸多边形的边界。
-
几何不变性: 曲线的形状仅与特征多边形各顶点的相邻位置有关,而与坐标系的选择无关。即Bezier曲线的形状在几何变换(如平移、旋转、缩放)下保持不变。
-
对称性: 如果保持n次Bezier曲线的所有控制点的位置不变,但将控制点的顺序颠倒(即下标为i的点改为下标为n-i的点),则曲线形状保持不变,只是曲线的走向会相反。
-
分段线性插值: Bezier曲线可以通过分段线性插值从其特征多边形获得新的控制顶点,并且新的控制多边形在原始控制多边形的凸包内。
-
曲线的升阶与降阶: 升阶是指在保持曲线形状和方向不变的情况下,增加定义曲线的控制顶点数。降阶则相反,是减少控制顶点数,同时保持曲线的主要特征。
B样条曲线的性质
-
局部修改能力: B样条曲线具有良好的局部修改能力。调整某一个控制点只会影响到与该点相关的曲线部分,不会影响到整个曲线。
-
与控制多边形更接近: B样条曲线相比Bezier曲线,更加接近控制多边形的形状。这使得它在形状设计上更加直观。
-
容易拼接: B样条曲线易于进行曲线段的拼接,可以自然地连接多段曲线,而无需附加条件。
-
低阶次: B样条曲线的阶次较低,不随控制点数目的增加而增加,因此计算较为简便。
-
通过特定控制点: 可以设计B样条曲线使其通过控制多边形中的特定顶点。这可以通过将控制多边形的首尾两条边各延长一定比例,并将新的顶点置为二重顶点来实现。
18.曲线的连接
曲线连接的连续性
G0 连续(位置连续)
- 定义:曲线在连接处保持位置连续,即两条曲线的终点与起点重合。
- 条件:曲线 𝑃(𝑡)P(t) 的终点和曲线 𝑄(𝑡)Q(t) 的起点重合。数学表达式为: 𝑃(𝑛)=𝑄(0)P(n)=Q(0)。
- 应用:适用于要求曲线段连接起来没有断裂,但不要求光滑过渡的情况。
G1 连续(切线连续)
- 定义:曲线在连接处不仅保持位置连续,还保持切线方向的连续。
- 条件:曲线 𝑃(𝑡)P(t) 的终点切线方向与曲线 𝑄(𝑡)Q(t) 的起点切线方向相同。数学表达式为: 𝑃′(𝑛)=𝑄′(0)P′(n)=Q′(0)。
- 应用:适用于要求曲线段连接起来不仅没有断裂,而且过渡光滑的情况,如汽车车身设计。
G2 连续(曲率连续)
- 定义:曲线在连接处不仅保持位置和切线方向的连续,还保持曲率的连续。
- 条件:曲线 𝑃(𝑡)P(t) 的终点曲率与曲线 𝑄(𝑡)Q(t) 的起点曲率相同。数学表达式为: 𝑃′′(𝑛)=𝑄′′(0)P′′(n)=Q′′(0)。
- 应用:适用于要求极高光滑度的情况,如航空器外形设计。
具体例子
连接Bezier曲线
- 位置连续:两条Bezier曲线的连接点处需要最后一个控制点和下一个曲线的第一个控制点重合。
- 条件: 𝑃𝑛=𝑄0Pn=Q0。
- 切线连续:需要调整控制点,使得连接点处的切线方向一致。
- 条件: 𝑃𝑛−1,𝑃𝑛,𝑄0,𝑄1Pn−1,Pn,Q0,Q1 共线。
- 曲率连续:需要调整控制点,使得连接点处的曲率一致。
- 条件:同时满足位置和切线连续,并且二阶导数一致。
连接B样条曲线
- 位置连续:类似于Bezier曲线,确保最后一个控制点与下一个曲线的第一个控制点重合。
- 条件: 𝑃𝑛=𝑄0Pn=Q0。
- 切线连续:调整控制点和节点向量,确保切线方向一致。
- 条件: 𝑃′(𝑛)=𝑄′(0)P′(n)=Q′(0)。
- 曲率连续:通过调整更多控制点和节点向量,确保曲率一致。
- 条件: 𝑃′′(𝑛)=𝑄′′(0)P′′(n)=Q′′(0)。
19.CRT、液晶显示器的工作原理
CRT显示器的工作原理
组成部分
CRT显示器主要由以下几部分组成:
- 电子枪:产生并发射电子束。
- 聚焦系统:将电子束聚焦成很窄的束。
- 加速电极:加速电子束。
- 偏转系统:控制电子束的偏转方向。
- 荧光屏:内表面涂有荧光物质,电子束轰击到荧光物质上,使其发光,产生可见图像 。
工作原理
- 电子枪发射电子束:灯丝加热阴极,阴极表面向外发射自由电子。控制栅控制自由电子是否向荧光屏发出。
- 聚焦和加速:电子流在到达屏幕的途中,被加速、聚焦成很窄的电子束。
- 电子束偏转:由偏转系统产生电子束的偏转电场(或磁场),使电子束左右、上下偏转。
- 荧光屏发光:电子束轰击到荧光屏的不同部位,被其内表面的荧光物质吸收,发光产生可见的图形 。
刷新机制
为了获得稳定的图像,荧光亮度会随着时间按指数衰减,因此需要在每一秒钟内重复显示许多次,这样人们才能看到一个稳定而不闪烁的图形。这就要求屏幕内容不断地被刷新 。
液晶显示器的工作原理
组成部分
液晶显示器主要由以下几部分组成:
- 液晶层:夹在两层玻璃板之间,液晶分子在电场作用下改变排列方式。
- 偏光片:位于液晶层的两侧,用于控制光的通过。
- 电极:用于施加电压改变液晶分子的排列。
- 背光源:提供光源,通过液晶层显示图像 。
工作原理
- 背光源发光:液晶显示器使用背光源提供光源。
- 电极施加电压:通过电极对液晶层施加电压,改变液晶分子的排列方式。
- 液晶分子调整光线:液晶分子的排列会影响光的通过量,通过调整液晶分子,可以控制每个像素的亮度和颜色。
- 偏光片过滤光线:偏光片控制光线的通过,最终形成图像 。
液晶显示器的工作原理基于液晶分子在电场作用下改变其排列,从而调整通过的光量,最终形成图像。由于液晶显示器不需要不断刷新,其图像稳定性和能耗都优于CRT显示器 。
总结
- CRT显示器通过电子束轰击荧光屏发光,需要高频刷新以保持图像稳定。
- 液晶显示器通过液晶分子的电场调整控制光的通过,不需要频繁刷新,能耗较低。
20.对称反射、旋转变换、斜投影变换、一点透视
21.二次、三次Bezier曲线
二次Bezier曲线
n=2,有3个控制点 抛物线
三次Bezier曲线
n=3
22.梁友栋裁剪
此内容很重点且复杂,建议去b站搜索教程,或仔细查看PPT,梁友栋被很多人称为“中国的计算机图形学之父”。此裁剪算法的思想很重要。
梁友栋裁剪算法
梁友栋裁剪算法(Liang-Barsky算法)是一种参数化的直线段裁剪算法。相比Cohen–Sutherland算法,梁友栋算法通过参数化直线方程,将二维裁剪问题转化为一维裁剪问题,从而提高了效率。其步骤如下:
-
参数化直线方程:将线段用参数方程表示:
𝑥=𝑥1+𝑢(𝑥2−𝑥1)=𝑥1+𝑢Δ𝑥x=x1+u(x2−x1)=x1+uΔx 𝑦=𝑦1+𝑢(𝑦2−𝑦1)=𝑦1+𝑢Δ𝑦y=y1+u(y2−y1)=y1+uΔy其中,𝑢u在0到1之间变化,𝑃(𝑥,𝑦)P(x,y)代表线段上的一个点。
-
计算参数范围:
- 根据窗口边界和直线方程,计算参数𝑢u的范围,确定线段在窗口内的部分。
-
更新参数:
- 通过计算各边界的交点,更新参数𝑢u的值。
- 若更新后的参数范围满足𝑢1≤𝑢2u1≤u2,则线段部分或全部在窗口内,计算裁剪后的线段端点。
- 否则,线段完全在窗口外,舍弃该线段。
特点:
- 计算交点次数减少,提高效率。
- 仅需一次除法计算更新参数,相比Cohen–Sutherland算法效率更高。
23.二次、三次B样条曲线画图
二次B样条
n=2
抛物线
三次B样条
n = 3
注意特殊外形设计,如三点共线,两点共点,三点共点等。