欢迎来到
全国咨询热线:
联系我们

地址:

电话:

传真:

邮箱:

时间:2019-07-29 12:19
模具CAD资料

  模具CAD/CAM 机械学院:韩翠红 第二章 计算机辅助图形处理技术 1、计算机辅助图形处理技术的数学基础 ? 2、窗口视图与图形裁剪 ? 3、图形变换 投影变化 ? 4、真实感图形绘制和透视图中的消隐处理 ? 计算机辅助图形处理技术 ? 计算机图形处理技术(计算机辅助绘图) —— 利 用计算机生成、处理、显示和存储图形。 ? 图形处理技术在 CAD技术中发挥着重要的作用, 了解和掌握计算机图形处理技术的一些基础知识 和相关的基本概念与术语,对掌握 CAD技术和熟 练使用CAD应用软件是非常有益的 2.1计算机辅助图形处理技术的数学基础 一、点的变换 ? (1)点的向量表示法 二维空间中,点用两个坐标 ? x, y ? 表示。 ? 计算机图形学里,点表示为 ?x 三维空间里,点表示为 ?x ?x ? y ?或 ? ? ? y? ?x ? y z ?或 ? ? y ? ? ? ?z ? ? 2.1计算机辅助图形处理技术的数学基础 (2)变换矩阵 ? 组成矩阵的元素可以表示各种量,例如数 字、坐标或一组方程的系数等。 ? 矩阵可以通过线性代数的方法进行运算。 ? AT ? B ? 用矩阵T 和A进行乘法运算而得出一个新矩 阵的方法,可以完成一个点或一组点的几 个变换,这里T一般称为“变换矩阵”。 2.1计算机辅助图形处理技术的数学基础 (3)点的变换 ? 设P 点的坐标矩阵为 ?x y ?,求其和一个一 般的 2 ? 2 变换矩阵相乘的结果: ? ?x 初始坐标 ? x, y ?被变换为?x , y? ?a b ? y?? ? ??ax ? cy? ? ?c d ? ?bx ? dy?? ? ?x y? x ? ax ? cy y ? cx ? dy 2.1计算机辅助图形处理技术的数学基础 1、当a ? d ? 1;b ? c ? 0 时,变换矩阵简化 为单位阵, ?1 0? ?x y?? ? ? ?x y? ? ?x y? 即 ?0 1? 这时P点坐标不发生变化。 b ? c ? 0 时, 2、当 d ? 1; ? ?x ?a 0? y ?? ? ?ax y ? ? ?x y? ? ? 0 1? 这时P点变换成在x方向 伸长a倍。 2.1计算机辅助图形处理技术的数学基础 ? 该变换产生已原点为中心的在 x 和 y 两个坐标方 向上的伸长。 ① 若 a ? d ,则伸长不相等。 ② 若 a ? d ? 1 ,则点 p 的坐标绕原点做纯放大(按比 例变化)。 ③ 若 0 ? a ? d ? 1 ,则点 p 的坐标绕原点缩小 ④ 若 a 或d 是负数,则在平面内发生围绕某轴的反 射。 ? 3、当 b ? c ? 0 时, ?a 0 ? ?x y?? ? ?ax dy? ? ?x ? ?0 d ? y? 2.1计算机辅助图形处理技术的数学基础 ? 如 d ? 1 和 a ? ?1的情况, 即 ?x ?? 1 0? y ?? ? ?? x ? ? 0 1? y ? ? ?x y? 这时发生对于 y 轴的反射。 d ? ?1 ,于是发生对于 x轴的反射。 如 a ? 1, 如 a ? d ? 0 ,于是将发生对于原点的反射。 上述变化均发生在矩阵主对角线项上。 ④ 若 a ? d ? 1和 c ? 0 时 2.1计算机辅助图形处理技术的数学基础 ? ?bx ? y ?? ? ?x y? 即 ?x 这时 p 点坐标的 x 值没有发生变化,而 y 则随初始 坐标线性变化,这个结果产生正比于x 的“错切 ”。 b ? 0 时,即 若a ? d ? 1 , ?1 b? y?? ? ?x ? ?0 1? ⑤ ?x 这时 p 点坐标的 y 值没有发生变化,而x 则随初始 坐标线性变化,这个结果产生正比于 y 的“错切 ”。 ?1 0? y ?? ? ??x ? cy? y? ? ?x y? ? ?c 1? 2.1计算机辅助图形处理技术的数学基础 原点的变换 ?a b ? ?0 0?? ? ?0 0? ? ?x y? ? ?c d ? 该种算法使得平面上任一点都不可能平移, 时期以缺点。 ⑥ 2.1计算机辅助图形处理技术的数学基础 ? 二、矢量运算 矢量:既有大小又有方向的量。一般来说,在物理学中称 作矢量,在数学中称作向量。在计算机中,矢量图可以无 限放大永不变形。 ① 两个矢量之和 V1 ? V2 ? ?x1 ? x2 , y1 ? y2 , z1 ? z2 ? ② 两个矢量的点积(点乘、数量积) V1 ? V2 ? x1 ? x2 ? y1 ? y2 ? z1 ? z2 ③ 矢量的长度 V1 ? ?V1 ? V2 ? ? ?x1 ? x1 ? y1 ? y2 ? z1 ? z2 ? 2.1计算机辅助图形处理技术的数学基础 ④ 两个矢量的叉积 其结果是个矢量。方向是Vector1,Vector2构成的平面法线 。再使用右手定则长度是 Length(Vector1)*Length(Vector2)*sin(theta),theta是 Vector1 & Vector2的夹角。 所以,平行的矢量叉乘结果为0矢量(长为0,方向任意) ? ?x , y , z? 计算结果矢量: x ? y1 z2 ? y2 z1 y ? z1 x2 ? z2 x1 z ? x1 y2 ? x2 y1 2.1计算机辅助图形处理技术的数学基础 三、矩阵运算 矩阵表示 A 或Am?n 或 aij m?n ,若 m ? n ,则 A 简称为正方矩阵或n阶矩阵。 n 元行距阵或行向量。 当m ? 1时, m元列矩阵或列向量。 当 n ? 1时, 两个矩阵只有在其行数、列数都相等,且 所有对应位置的元素都相等时,才是相等 的。 ? ? ? 2.1计算机辅助图形处理技术的数学基础 矩阵的加法运算 设两个矩阵A 和 B 都是 m行 n列矩阵,相加记做 A? B。 ① ? a11 ? b11 a12 ? b12 ?a ?b a ? b 21 21 22 22 ? A? B ? ? ... ... ? ?am1 ? bm1 am 2 ? bm 2 ... a1n ? b1n ? ? ... a2 n ? b2 n ? ... ... ? ? ... amn ? bmn ? 2.1计算机辅助图形处理技术的数学基础 数乘矩阵 用数k 乘矩阵 A的每一个元素而得到的矩阵叫做 k 与 A 之积, 记为kA 或 Ak 。 ③ 矩阵的乘法运算 设矩阵 A ? aij 2?3 B ? Bij 3?2 ② ? ? ? a11 C ? A? B ? ? ?a21 a12 a22 ?b11 a13 ? ? b21 ? ? a23 ? ? ?b31 ? ? b12 ? ? b22 ? b32 ? ? ? a11b11 ? a12b21 ? a13b31 ?? ?a21b11 ? a22b21 ? a23b31 a11b12 ? a12b22 ? a13b32 ? a21b12 ? a22b22 ? a23b32 ? ? 2.1计算机辅助图形处理技术的数学基础 零矩阵的运算 设有零矩阵 0m?n ,任意矩阵 Am?n 。则有 Am?n ? 0m?n ? Am?n ⑤ 单位矩阵 aij ? 1 ,其余元 在一矩阵中,其主对角线各元素 素均为零的矩阵叫做单位矩阵。 n阶的单位矩阵记做 I n 。 ④ ⑥ I n ? Am?n ? Am?n Am?n ? I n ? Am?n 逆矩阵 ?1 ?1 A ? A ? A ? A ? I ,则称 A ?1 为 A 的逆 A 若存在矩阵 , 矩阵。 2.1计算机辅助图形处理技术的数学基础 逆矩阵 n 阶矩阵,如果有n阶矩阵B 存在,使得:A ? B ? B ? A ? I 设 A 是一个 ? 则说 A 是一个非奇异矩阵, B 是A 的逆。否则,便说A 是一个奇异矩阵。 当A非奇异时,其逆B也非奇异,而且A也就是B的逆,即A、B互为逆。 如: ? 2 3? ? 1 ? 4 ? 3? ?1 0 0? ? 1 ? 1 0? ? 1 ? 5 ? 3? ? ?0 1 0? ? ?? ? ? ? ? 4? ?? 1 2 1? ?? ?? 1 6 ? ? ?0 0 1 ? ? 2 ? 1 ? 4 ? 3? ? 2 2 3? ?1 0 0? ? 1 ? 5 ? 3? ? 1 ? 1 0? ? ?0 1 0? ? ?? ? ? ? ? 4? ?? 1 6 ?? ?? 1 2 1? ? ? ?0 0 1 ? ? 任何非奇异矩阵A都只能有一个逆矩阵。 2.1计算机辅助图形处理技术的数学基础 转置矩阵 把矩阵 A ? (aij )m?n 的行、列互换而得到的 n ? m 矩阵叫做 A 的 T 转置矩阵 ,记为 A 。 矩阵的转置具有如下几点基本性质: ⑦ ?A ? B?T ? AT ? BT ?aA?T ? aAT T n A ? A A 当 是一个 阶矩阵,而且有 时,则说 A 是一个对称 矩阵。 ?A ? T T ?A ?A? B?T ? BT ? AT 2.1计算机辅助图形处理技术的数学基础 矩阵运算的基本性质 矩阵加法适合交换律与结合律 A? B ? B ? A A ? ?B ? C ? ? ? A ? B ? ? C ⑧ 数乘矩阵适合分配律与结合律 矩阵的乘法适合结合律 A( B ? C) ? ? A ? B?C 矩阵的乘法对加法适合分配率 ? A ? B ?C ? AC ? BC C ? A ? B ? ? CA ? CB ?? ? ? ?? A ? ?A ? ?A ? ??A? ? ??? ?A a ? ? A ? B ? ? aA ? aB a ? ? A ? B ? ? ?a ? A? ? B ? A ? ?a ? B ? 2.1计算机辅助图形处理技术的数学基础 矩阵的乘法不适合交换律 如: ?? 2 4 ? ? 2 4 ? ? ?? 16 ? 32? ? ? 1 ? 2? ? ? 3 ? 6? ? 8 ? ?? ? ? 4 ? ? ? 2 4 ? ?0 ?2 ? ? 3 ? 6 ? ? 1 ? 2 ? ? ?0 ? ?? ? ? 16 ? ? 0? 0? ? 2.1计算机辅助图形处理技术的数学基础 四、齐次坐标 ? 所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向 量来表示。 ? 例如,二维点(x,y)的齐次坐标表示为(hx,hy,h)。由此可以 看出,一个向量的齐次表示是不唯一的,齐次坐标的 h取 不同的值都表示的是同一个点,比如齐次坐标 (8,4,2) 、 (4,2,1) 表示的都是二维点 (4,2) 。用一个 n+1 维向量表示一 个n维向量。 ? h称为比例因子。一般取h=1,称为正常化齐次坐标 2.1计算机辅助图形处理技术的数学基础 ? n维空间点的位置向量: 用非齐次坐标表示时,具有n个坐标分量(P1,P2,…… ,Pn),且是唯一的用齐次坐标表示时,有n+1坐标分量 (hP1,hP2,……,hPn,h),且不唯一。非齐次坐标与 齐次坐标是一对多的关系,但不影响图形的形状。 2.1计算机辅助图形处理技术的数学基础 ? ? ? 例1 二维空间点[x y] 齐次坐标:[hx hy h] 通常,在实际应用中取h=1,即用三维向量[x y 1]表示二 维向量[x y],但[x y 1]可看作是z=1平面上的点,亦即图 形落于z=1平面上,但对图形形状没有影响。 与此类似,三维空间点的齐次坐标表示为[x y z 1] 2.1计算机辅助图形处理技术的数学基础 ? 例2 图形的点集表示 ? 二维图形或三维立体图,可用一个点集来表示,每个 点对应一个行向量,则点集为n×3或n×4阶的矩阵: C A B ? xa S3 ? 3 ? ? ? xb ? ? xc (a) ya 1? yb 1? ? yc 1? ? D C A B ? xa ?x S4? 4 ? ? b ? xc ? ? xd (b) ya yb yc yd za 1? zb 1? ? zc 1? ? zd 1? 2.1计算机辅助图形处理技术的数学基础 采用齐次坐标的优点: ? ⑴提供了用矩阵运算把二维、三维甚至更高维空间中的 一个点集从一个坐标系变换到另一个坐标系的有效方法。 ? 例如:二维、三维齐次坐标变换矩阵的统一表示形式分 ?a b ?? ?c d ? ?m n p? q? ? s? ? ?a b ?d e ?? ?h i ? ?l m c f j n p? q? ? r? ? s? 别为 T2 D T3 D 2.1计算机辅助图形处理技术的数学基础 ? ? ⑵可以表示无穷远点 n+1维空间中,h=0的齐次坐标实际上表示了一个n维的无 穷 远 点 : 二 维 的 齐 次 坐 标 [a , b , h] , 当 h→0 , 表 示 ax+by=0的直线,即在y=-(a/b)x上的连续点(x,y)逐渐趋 于无穷远,但其斜率不变。 在三维情况下,利用齐次坐标表示视点在原点时的投影变 换(三维物体→二维图形表示),其几何意义更加清晰。 2.2、窗口视图与图形裁剪 一、坐标系 ? 计算机在处理图形信息时,几何图形的定义和图形的输入 /输出都是在一定的坐标系下进行的 ? 图形在输入 / 输出的不同阶段需要采用不同的坐标系,以 方便设计人员的理解和操作,提高图形处理效率 2.2、窗口视图与图形裁剪 ? ? 1、设备坐标系(Device Coordinate System,DCS) 用于在图形显示设备上定义图形或窗口的位置 通常由沿 水平方向的x轴和沿垂直方向的y轴组成,其坐标原点可以 任意选择。 图形显示是将真实图形投影于显示屏幕上,故设备坐标系 的z轴垂直于坐标系的xoy平面。设备坐标系也是定义像素 和位图的坐标系。 ? 2.2、窗口视图与图形裁剪 ? 对于相同的图形信息,当采用设备坐标系编写图形程序时 ,由于坐标系的原点位置、X和Y坐标轴方向以及图形窗口 的显示范围不同,在不同显示设备上显示出的图形是不同 的。 2.2、窗口视图与图形裁剪 ? ? ? ? 2 、 虚 拟 设 备 坐 标 系 ( Virtual Device Coordinate System,VDCS ) 避免由于设备坐标系与设备的相关性影响应用程序的可 移植性,在编写图形程序时,应采用虚拟设备坐标系。 虚拟设备坐标系的原点通常位于显示器的左下角,其X、Y 轴的正方向分别指向右方和上方,且取值范围均为0~1 用虚拟设备坐标系定义的点,在不同的图形设备上占据相 同的位置而与设备无关,编写图形程序时也不必考虑某个 特定的设备坐标系。 2.2、窗口视图与图形裁剪 ? 当图形程序在某台图形设备上运行时,图形程序将虚拟设 备坐标发送给设备驱动程序,由该程序将虚拟设备坐标转 换成与该设备一致的设备坐标系 虚拟设备坐标系也称之为规格化的设备坐标系( normalized Device Coordinate System,NDCS),主要用于 定义视图区 Y 1 ? 0 1 X 2.2、窗口视图与图形裁剪 3、世界坐标系、造型坐标系和观察坐标系 设备坐标系和虚拟设备坐标系提供了在二维显示屏幕上 定义几何图形的坐标系 三维空间中定义几何形体时可采用 3 种坐标系:世界坐 标系、造型坐标系和观察坐标系 ① 世界坐标系( World Coordinate System,WCS ) ? 用于描述现实世界的整体布局,即何种类型的对象存 在于我们所描述的世界之中及其如何定位 2.2、窗口视图与图形裁剪 造型坐标系(Modeling Coordinate System,MCS) ? 用于描述世界坐标系中每个具体物体的形状,每个物 体均由其自身的造型坐标系定义。当物体的空间位置发生 变化时,由造型坐标系定义的物体上各点的坐标值不变。 造型坐标系与世界坐标系是整体与局部的关系 ? 在许多CAD系统中,用造型坐标系定义基本图形元素 ,如圆柱体、球体等。这些基本图形元素被调用后,应用 相关的变换矩阵将其置于世界坐标系的指定位置 ? 造型坐标系又称为局部坐标系,而世界坐标系又称为 整体坐标系。 ② ? “世界坐标系”、“造型坐标系”与通用绘 图软件中“用户坐标系”(UCS)的区别? 2.2、窗口视图与图形裁剪 ③ 观察坐标系 如同将现实世界的景物投影到人的视网膜上一样,为了将三维 物体投影到显示屏幕(或观察平面)上,需要建立观察坐标系(View Coordinate System,VCS) ? ? ? 透视投影 平行投影 图中的xvyvzv坐标系即为观察坐标系 2.2、窗口视图与图形裁剪 ? ? ? ? 4 坐标变换 不同的坐标系之间通过变换矩阵建立联系 每个造型坐标系的位置和方位可通过变换矩阵由世界坐标系确定 观察坐标系也可通过世界坐标系定义的一系列数据由与世界坐标系相 关的变换矩阵确定,如图所示 2.2、窗口视图与图形裁剪 首先 通过定义世界坐标系和造型坐标系之间相对 移动和旋转的变换矩阵,将造型坐标系下的坐 标数据变换为世界坐标系下的坐标数据,该变 换称之为造型变换 其次 通过用世界坐标系和观察坐标系间的变换矩 阵,将图形的世界坐标变换为观察坐标,该变 换称之为观察变换 然后 通过投影变换将观察坐标变换为虚拟设备坐 标(或规格化的设备坐标),即投影变换。 最后 由设备驱动程序将虚拟设备坐标(或规格 化的设备坐标)转换成设备坐标,将图形显示 在特定的图形设备上 2.2、窗口视图与图形裁剪 ? ? ? ? ? 坐标变换通常在图形程序库内部完成,应用图形程序编程 人员仅需指明每个变换所必需的信息即可 例 为造型变换定义几何形体按其分布位置所需的平移或 旋转量 为投影变换定义投影类型、投影中心位置以及投影屏 幕(或投影表面)等 然而,在图形程序的底层,还需要编程人员为所有这 些变换编写相关代码。 2.2、窗口视图与图形裁剪 二、窗口与视区 1、窗口 通常表示在用户坐标系中定义的确定显 示内容的一个矩形区域,只有在这个区域内的图 形才能在设备坐标系下输出,而窗口外的部分则 被裁掉,相当于透过窗口观察这部分图形,称为 “窗口”。 窗口应小于等于用户区域。 ? ? ? 对窗口的图形操作: 裁剪----将窗口外部分的图形去掉,保留窗口内图 形的处 理方法。 覆盖----裁剪的逆处理。 窗口的裁剪与覆盖 ? 视区 视区是用户在设备坐标系(DCS)中定义的一个小于或等 于屏幕或图板的区域,用于输出用户坐标系下窗口中的图 形。 视区决定了窗口中的图形要显示在屏幕上或输出到绘图机 图板上的位置和大小。 视区一般定义为矩形,即用该矩形的左下角点的坐标( Vxl,Vyb)和右上角点的坐标(Vxr,Vyt)来定义其大小和 位置,视区也可以嵌套 ? 视区----设备坐标系下定义的用于输出图形 的区域。 AutoCAD的屏幕窗口分区 Y wyt 窗口 wyb vyt 视区 vyb wxl wxr X (a)用户坐标系中的窗口 vxl vxr X (b)屏幕坐标系中的视区 要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换 (Window-Viewport Transformation)理,这种变换就是观察变换。 Y 视区变换 要将窗口内的点(xw,yw)映射到相对应的视区内的 点(xv,yv)需进行以下步骤: (1) 将窗口左下角点移至用户系统系的坐标原点 (2) 针对原点进行比例变换 变换公式(推导) 窗口视图的变换步骤 旋转变换 ? ? 假设点P(x, y)是平面直角坐标系内一点,其到原点的距离为r,其与X 轴的夹角为A,现将点P绕原点旋转θ度,得到点P‘(x’, y‘),P’与X轴的 夹角为B,则A = B - θ。(注意,在二维坐标中,逆时针旋转时角度 为正,顺时针旋转时角度为负,下图中由P旋转到P‘,角度为θ,若是 由P’转到P,则角度为-θ)。 于是可得下面的转换方程 ? ? (式一) 旋转变换 ? 写成矩阵的形式就是 ? 求得旋转矩阵为 ? 由于这里使用齐次坐标,所以还需加上一维,最终变成如 下形式 绕Z轴旋转 旋转变换 ? 对于绕X轴旋转的情况,我们只需将式一中的x用y替换,y 用z替换,z用x替换即可。替换后得到 (式二) ? ? 对应的旋转矩阵为(绕X轴旋转) 逆矩阵 逆矩阵 三维图形变换 投影变换 ? 把三维坐标表示的几何形体变为二维 图形的过程叫投影变换,投影变换分为: ? 三维图形变换——投影变换 ? 根据投影中心与投影平面之间距离的不同 ,投影可分为平行投影和透视投影。 透视投影的投影中心到投影面之间的距离 是有限的,而平行投影的投影中心到投影 面之间的距离是无限的。 三维图形变换——投影变换 正平行投影(三视图) ? 投影方向垂直于投影平面时称为正平行投 影,我们通常说的三视图(主视图、俯视 图、左视图)均属正平行投影。 ? 三面视图的变换矩阵为: ? 三维图形变换——投影变换 消隐的概念与作用 ? 在使用显示设备描绘物体的图形时,必须把三维信 息经过某种投影变换,在二维的显示表面上绘制出 来。例如,轴测图和透视图,就是通过轴测变换或 透视变换,求出所有顶点的投影点,再把各点连结 起来。下图中第一个图形代表的是后边哪一个呢? ? 由于投影变换失去了深度信息,往往导致 图形的二义性。要消除二义性,就必须在 绘制时消除实际不可见的线和面,习惯上 称作消除隐藏线和隐藏面,或简称为消隐 。 ? ? ? ? 消隐算法的测试方法 针对不同的显示对象和显示要求,会有不同消隐算法 与之相适应。 重叠测试 许多物体的投影是由若干个多边形构成的,将这些多 边形两两判别,看它们是否有重叠部分,如果不重叠,说 明它们肯定不互相遮挡。这种方法就叫重叠测试 。 ? ? ? 深度测试 深度测试是用来测试一个物体遮挡另一个物体的 基本方法。常用的有优先级测试和物体空间测试。 ? 包含性测试 测试点与多边形的包含关系有两种方法: 1.射线.夹角求和算法 ? ? 可见性测试 可见性测试主要用来判别物体自身各部分哪些部分没 有被其自身其它部分遮挡即可见的,那些部分被其自身其 它部分遮挡即不可见的。 常用消隐算法 ? ? ? 根据消隐对象不同,消隐算法可分为两类: 若消除的是物体上不可见的线段,称为线消隐;若消 除的是物体上不可见的面,称为面消隐。 根据消隐空间的不同,消隐算法又可分为两类: 物体空间的消隐算法 这类算法是将物体表面上的k个多边形中的每一面与 其余的k-1个面进行比较,精确地求出物体上每条棱边或 每个面的遮挡关系。 ? ? 图形空间的消隐算法 在消隐算法中,图像空间就是上述的屏幕坐标空间。 这类算法对屏幕的每一像素进行判断,以决定物体上哪个 多边形在该像素点上是可见的。若屏幕上有m*n个像素点 ,物体表面上有k个多边形,则该类消隐算法的计算量将 正比于m*n*k。 消隐的基本思想很简单,但要真正实现却要耗费很长 的判别和运算时间。消隐算法的处理效率将是决定能否被 有效采用的关键。 Z缓冲器算法 ? Z缓冲器算法也叫深度缓冲器算法,属于图像空间消隐 算法。 深度缓冲器算法有两个缓冲器:深度缓冲器和帧缓冲 器。对应两个数组:深度数组depth(x,y)和属性数组 intensity(x,y)。前者存放着图像空间每个可见像素的z 坐标,后者用来存储图像空间每个可见像素的属性(光强 或颜色)值。 ? ? 一、Z缓冲器算法基本思想 将投影平面每个像素所对应的所有面片(平面或曲面 )的深度进行比较,然后取离视线最近面片的属性值作为该 像素的属性值。 算法通常沿着观察坐标系的Z轴来计算各物体表面距观 察平面的深度,它对场景中的各个物体表面单独进行处理, 且在各面片上逐点进行。物体的描述转化为投影坐标系之后 ,多边形面上的每个点(x,y,z)均对应于观察平面上的 正投影点(x,y)。因而,对于观察平面上的每个像素点( x,y),其深度的比较可通过它们z值的比较来实现。对于 右手坐标系,z值最大的点应是可见的。见下图。 ? ? ? 在观察平面上,面s1相对其它面z值最大, 因此它在该位置(x,y)可见 ? ? ? ? ? ? ? 二、Z缓冲器算法步骤 初始时,深度缓冲器所有单元均置为最小z值,帧缓 冲器各单元均置为背景色,然后逐个处理多边形表中的各 面片。每扫描一行,计算该行各像素点(x,y)所对应的 深度值z(x,y),并将结果与深度缓冲器中该像素单元 所存储的深度值depth(x,y)进行比较: 若 z>depth(x,y) 则 depth(x,y)=z 而且将该像素的属性值I(x,y)写入帧缓冲器, 即 intensity(x,y)= I(x,y) 否则不变。 也可用背面剔除法进行预处理,即背面不参加处理, 以提高消隐的效率。 ? 三、深度值的计算 ? 若已知多边形的方程,则可用增量法计算扫描线每 一个像素的深度。 ? 设平面方程为: (式1) 则多边形面上的点(x,y)所对应的深度值为: C≠0 ? (式2) ? 由于所有扫描线上相邻点间的水平间距为1个像素单 位,扫描线行与行之间的垂直间距也为1。因此可以利用 这种连贯性来简化计算过程,如图所示。 ? 深度计算 ? ? 若已计算出(x,y)点的深度值为zi,沿x方向相邻连贯点 (x+1,y)的深度值zi+1可由下式计算: (式3) 沿着y方向的计算应先计算出y坐标的范围,然后从上至下 逐个处理各个面片。由最上方的顶扫描线出发,沿多边形 左边界递归计算边界上各点的坐标: (式4) ? ? ? ? ? ? 这里m为该边的斜率,沿该边的深度也可以递归计算出来 ,即: (式5) 如果该边是一条垂直边界,则计算公式简化为: (式6) ? 对于每条扫描线计算出与其相交 的多边形最左边的交点所对应的深度值,然后, 该扫描线计算出来。 所有的多边形处理完毕,即得消隐后的图形。 ? ? 四、Z缓冲器算法特点 z缓冲器算法的最大优点在于简单,它可以轻而易举 地处理隐藏面以及显示复杂曲面之间的交线。画面可任意 复杂,因为图象空间的大小是固定的,因此计算量最多随 画面复杂度线性增长。 它的主要缺点是,深度数组和属性数组需要占用很大 的内存。以深度数组为例,对于800×600的显示分辨率 ,需要480000个单元的缓冲器存放深度值,如每个单元 需要4个字节,则需要1.92兆字节。 一个减少存储需求的方案是,每次只对场景的一部分 进行处理,这样只需要一个较小的深度数组。处理完一部 分之后,该数组再用于下一部分场景的处理。 ? ? 图形的光照处理基本原理 ? 采用消隐技术消除了隐藏线和隐藏面后,图形就没有了二 义性问题,但仅仅这样还不够,还要考虑创造所谓真实感 图形。光照处理是绘制真实感图形所需的重要技术之一, 它模拟光线照射在物体上,物体反映出来的感观效应,通 过必要的算法,实现实际物体在计算机上的虚拟。 ? 图形的光照处理基本原理 ? ? ? ? 从物体表面反射或折射出来的光的强度取决于很多因素 :首先是光源的性质,包括点光源、多点光源或分布光源 、光的波长、光源的位置等。 其次是物体的表面性质,包括物体表面形状、表面性质 (反射率、折射率、光滑度等)以及一些表面细节(颜色 、纹理等)。 最后是物体周围的环境、视点位置以及不同人对光的感觉 差异等也会对光强产生影响。它们通过对光的反射和折射 形成环境光,在物体表面上产生一定的照度。它们还会在 物体上形成阴影。 为了使显示的图形更加逼真,要考虑到物体表面由于光 照而产生的明暗变化,这需要对物体进行光照处理。 图形的光照处理基本原理 ? ? ? ? 对物体进行光照处理需要建立合适的光照模型,并通 过显示算法将物体在显示器上显示出来。 当光照射到一个物体的表面上时,物体对光会产 生反射、投射和散射作用,物体内部还会吸收一部分 光。这可用如下等式表示: 入射光=反射光+投射光+散射光+吸收光 用简单光反射模型模拟光,照射到物体表面时, 产生了光的反射效果,它假定光源是点光源,物体是 非透明体,于是投射光和散射光将近似于零。 图形的光照处理基本原理 ? ? ? ? ? ? ? 漫反射 当光线照射到表面粗糙、无光泽的物体上,物体表面表现为漫 反射形式,即光线沿各不同方向都做相同的散射。故而从各个角 度观察,物体都有相同的亮度。 镜面反射 光照射到光滑表面,镜面反射的光取决于入射光的角度、波长 和反射表面的材料性质。 环境光 光源照射到周围物体上,反射出的光照射到该物体上也能让我 们看见它。这种光叫环境光或泛光。环境光亮度均匀,通常由多 个物体经多重反射形成,因此无法精确计算光强。在简单光照模 型中,把它处理为常数。 几种光各有自己的特色,综合起来就是作用在物体上的综合光 强。 光照处理的基本算法 ? ? 恒定亮度法 恒定亮度法就是对于整个多边形只算出一个亮 度值,用这个亮度显示物体上多边形所在的那个 面。这种方法只适合于在某些特定条件下,如物 体表面仅暴露于背景光下,没有表面图案、纹理 或阴影时。 ? 马赫带效应(Mach band effect) ? 视觉的主观感受在亮度有变化的地方出现 虚幻的明亮或黑暗的条纹,马赫带效应的 出现是人类的视觉系统造成的。 ? 增强边缘对比度的机制 ? ? ? ? Gouraud插值法(亮度插值法) 这种方法消除了亮度上的不连续性,它线性地改变 每个多边形平面亮度,使亮度值同多边形边界相匹配 ,解决了相邻平面之间亮度的不连续性,在一定程度 上消除了马赫带效应。但它仅能保证在多边形两侧亮 度的连续性,而不能保证亮度变化的连续性,故不能 完全消除马赫带效应。同时由于采用插值的方法,使 得镜面反射所产生的高光效果很不理想,故Gouraud 插值法对于只考虑漫反射的模型效果较好。 此外,进行光照处理的还有双线性插值法(Phong 插值法)、整体光照模型和光线跟踪算法、辐射度法 等,而且还可派生出一些阴影生成法,来获得更好的 真实感。 课堂作业讲解 ? 推导以直线为对称轴的二维对 称变换矩阵。