计算机图形学 期末复习part3:论述

简介: 计算机图形学 期末复习part3:论述

6.字符的表示与裁剪

1.字符的表示方法

点阵字符——每个字符用一个位图(掩膜) 来表示,位图存的就是表示这个字符的每个像素点的(点亮或不亮)信息。其大小由位图的尺寸来确定,如7×9,9×16,16×24等。某一位取1表示1所在的像素点点亮,某一位取0表示0所在像素点不要点亮。

矢量字符—— 用几何坐标表示字符,保存端点的几何坐标。选一个正方形网格,作为字符的局部坐标空间。网格的大小可选16 × 16,32 × 32,64 × 64等。每个字符由构成它的笔画组成,每个笔画可以看做直线段又由其两端确定。每个端点保存它的坐标值及连线标志。连线标志表示当前端点和前一端点是否存在连线(1表示连线)。用-1表示结束标志。特点:除用直线段表示笔画外,还可采用二次三次曲线段。对矢量字符的变换是对其端点进行图形的几何变换。

2.字符的裁剪方法

简单裁剪方法:用点阵字符的掩膜或矢量字符的网格大小作为字符的包围框,若该包围框在窗口内,则显示字符;否则,不予显示。(字符的一部分在窗口内,一部分在窗口外,也完全不显示)

精确裁剪方法:对于点阵字符,判断组成其笔画的每个像素点是否位于窗口内。对于矢量字符,对组成其笔画的每条线段进行裁剪,保留位于窗口内的可见线段。

7.扫描表示法

1.基本原理

空间的点、线、面沿着某一路径扫描时,所形成的轨迹可用来定义一个一维的、二维的或三维的物体。

在三维形体表示中,主要采用平移扫描法和旋转扫描法。用扫描表示法表示一个三维形体需要两个要素:做扫描移动的面、面进行移动的轨迹。

2.平移扫描法

将一个二维的面沿着一个指定的方向平行(如可以斜向上)移动,其轨迹便形成了一个三维形体。特点:采用这种方法得到的形体具有相同的截面。

3. 旋转扫描法

将一个二维的面绕一条母线(旋转轴)旋转,其轨迹便形成了一个三维形体。特点:得到的物体都是轴对称物体。

4. 广义扫描法

若在平移扫描的过程中可改变截面的大小和形状,甚至改变移动的方向,便可形成复杂的三维形体。

8.正投影

正投影的投影面与某一坐标轴垂直,而投影方向与该坐标轴的方向一致。

形成正投影时必须满足的条件:1.投影中心到投影面距离无限(形成平行投影)。2.投影线和投影面垂直(正平行投影)。3.投影面和坐标轴垂直(正投影)。正投影的图形在长宽高三个方向上的比例与实物保持一致,不具有透视投影透视缩小效应,能够精确反映物体实际尺寸。因此,常用于工程制图。

给出投影线方向,投影线与投影面垂直,与另一个轴平行。对于线画图形,把每条边求出来,就能把投影面求出来。边由端点确定,只需要把每一条边的端点在投影面上投影求出,按点的拓扑关系(连接关系)把边连出来,即可以绘制主视图。

得到投影图的关键在于得到构成这些投影图的特征点的坐标,根据投影变换矩阵进行计算点坐标。在坐标系中把点确定后按照原始拓扑关系重新连点,把投影图画出来。投影就是一种几何变换。把每个点的规格化坐标乘上投影变换矩阵得到投影点坐标。

正投影的投影变换矩阵根据投影前后坐标变换关系得到。

主视图投影面与x轴垂直,正面投影面,可以在yOz平面得到

image.png

侧视图投影面与y轴垂直,侧面投影面,可以在xOz平面得到

image.png

俯视图投影面与z轴垂直,水平投影面,可以在xOy平面得到

image.png

9.消隐算法常用的技术

1.排序

在一个三维场景中,离观察者越近的物体被遮挡概率越小,被观察者看到的概率越大,可见性越大。

确定物体间遮挡关系的要素:视点位置、视线方向(z值)。即距离观察者的远近程度。

按观察方向上离视点(投影参考点)的远近(深度坐标)(通常用 z 值来表示)排序,在uvn坐标系中是n坐标。建立观察坐标系后,得到每一个物体对于观察者的深度,才能进行排序。要按照三个坐标进行排序后才能真正确定与观察者之间的遮挡关系,但先按深度坐标排序。

2.测试

判断物体自己构成要素(点线面)之间的遮挡关系。用以判断点与面、线与面、面与面之间的关系。

包含测试:测试空间点的投影是否在某个空间多边形的投影内(点面关系),若在,则可能存在遮挡关系;若不在,则不存在遮挡关系。测试方法:从空间点的投影开始向与 y 轴平行的方向作射线,计算该射线与空间多边形的投影的交点个数,若为奇数,则点的投影在多边形的投影内;若为偶数,则点的投影不在多边形的投影内。(若恰好经过多边形顶点,左闭右开,只计算左边,右边不计数)

重叠测试:测试两个空间多边形的投影是否重叠,若重叠,则可能存在遮挡关系;若不重叠,则不存在遮挡关系。测试方法:用包围框方法来测试,最常用的是包围某个多边形的最小矩形。在图形包围框彼此重叠的情况下,用边的包围框进行重叠测试。

10.提高消隐算法效率的方法

1.利用相关性(连贯性)

相关性定义:所考察的物体或视图区内图像局部的性质保持不变或缓慢变化,像素点近似保持不变。(1)物体的相关性:用于判断物体之间遮挡关系。若物体 A 与物体 B 是完全相互分离的,消隐时只需比较 A 、 B 两物体之间的遮挡关系,而不需对其表面多边形逐一进行测试。物体面的遮挡关系决定于物体之间的遮挡关系。

(2)面的相关性:一个面内的各种属性值(坐标值、灰度值等)一般都是缓慢变化的,可采用简单增量方式进行计算。

(3)区域相关性:一个区域是指屏幕上一组相邻的像素,它们通常属于同一个可见面。区域相关性表现在一条扫描线上时,即为扫描线上的每个区间内只有一个面可见。

(4)扫描线相关性:在相邻的两条扫描线上,可见面的分布情况相似。

(5)深度相关性:物体的同一表面上的相邻部分深度是相近的。

2.包围盒技术

对物体间的某些关系进行比较和测试,(由于物体不规则)从而可避免盲目的求交运算,减少计算量,提高效率。

二维图形 ----- 包围框(重叠测试);

三维物体 ----- 包围盒、包围球。

3.背面剔除

一个平面多面体的表面由若干个平面多边形构成,若一个多边形表面的外法线(从内指向外的法线)方向与投影方向(观察方向)的夹角为钝角,则该面为前向面;若其夹角为锐角,则为后向面或背面。被保留下的前向面被称为潜在可见面。

4.活化表技术 ( active list )

设置活化表,用于存放与当前的处理相关的信息,从而可最大限度地缩小处理范围,提高算法的率。


目录
相关文章
|
6月前
大学物理(上)-期末知识点结合习题复习(1)——运动的描述(两类运动学知识点、圆周运动知识点、相对运动知识点)
大学物理(上)-期末知识点结合习题复习(1)——运动的描述(两类运动学知识点、圆周运动知识点、相对运动知识点)
41 0
|
7月前
|
编解码 算法 5G
信息论与编码期末复习——概念论述简答题(一)
信息论与编码期末复习——概念论述简答题(一)
181 0
信息论与编码期末复习——概念论述简答题(一)
|
7月前
|
存储 移动开发 C语言
# C程序设计内容与例题讲解 -- 第三章第一部分(第五版)谭浩强
# C程序设计内容与例题讲解 -- 第三章第一部分(第五版)谭浩强
|
7月前
|
C语言 数据格式
C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强
C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强
|
7月前
|
存储 C语言
C程序设计内容与例题讲解 -- 第三章第二部分(第五版)谭浩强
C程序设计内容与例题讲解 -- 第三章第二部分(第五版)谭浩强
|
26天前
|
Java 程序员 编译器
float f = 3.4; 背后的奥秘,90% 的程序员都答错了!
小米是一位热爱分享技术的29岁程序员,本文探讨了一道常见的Java面试题——为何直接声明浮点型变量3.4会报错。文中详细解析了Java中float与double的区别及处理方法,指出了默认情况下3.4被视为double类型,需通过加后缀F或强制类型转换解决。同时,小米还分享了浮点数精度问题及其在实际开发中的应用建议。
35 4
|
6月前
|
机器学习/深度学习 移动开发 人工智能
C语言程序设计的50个小案例
C语言程序设计的50个小案例
|
7月前
|
算法 调度
C程序设计内容与例题讲解 -- 第二章(第五版)谭浩强
C程序设计内容与例题讲解 -- 第二章(第五版)谭浩强
|
算法 搜索推荐 C++
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(1)
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(1)
314 0
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(1)
|
算法 编译器 C++
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(2)
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(2)
232 0
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(2)