当前位置:首页 >> 高中教育 >>

三维


第8章 章

三维形体的显示

8.1 8.2 8.3 8.4 8.5 8.6

三维形体输出流程图 观察坐标系的建立 观察变换 投影变换 观察体与三维裁剪 三维形体完整的输出过程

8.1 三维形体输出流程图 1. 三维形体显示与二维物体显示存在许多不同 的地方: 的地方 (1) 允许从任意空间位

置观察物体 从前面、上 允许从任意空间位置观察物体: 从前面、 面和后面。 面和后面。 也可以从一组物体的中间或一个物体的内部 观察物体,如建筑物。 观察物体,如建筑物。 (2) 三维物体必须投影到二维的显示(输出)设 三维物体必须投影到二维的显示(输出) 备上。 备上。 (3) 裁剪空间是体空间。 裁剪空间是体空间。

2. 观察流水线 用计算机模拟三维形体显示的步骤与照相机 拍照的过程有点相似,但更加灵活, 拍照的过程有点相似,但更加灵活,选择多 样。 下图描述了将用户坐标系中描述的物体转换 成设备坐标的过程。 成设备坐标的过程。 造型坐标 造型变换 观察变换 投影变换 工作站变换 用户坐标 观察坐标 投影坐标 设备坐标

8.2 观察坐标系的建立 我们可以在任意地点、任意距离和任意角度 我们可以在任意地点、 给物体拍照, 给物体拍照,并通过相机的孔径大小选择拍 摄自己感兴趣的部分。 摄自己感兴趣的部分。 类似地,给定观察位置、方向及“相机” 类似地,给定观察位置、方向及“相机”的 孔径大小, 孔径大小,我们可以用图形软件包在二维平 面上显示三维物体。 面上显示三维物体。基本思路是建立一个满 足左手坐标系法则的观察坐标系。 足左手坐标系法则的观察坐标系。
xv u n zv v yv

建立观察坐标系的步骤: 建立观察坐标系的步骤: 1. 在用户坐标系中选取一点P0作为观察坐标系的原 在用户坐标系中选取一点 该点称为观察参考点。 点,该点称为观察参考点。 zw
N

zv i P0 xw

i yw P

2. 选取 v轴的正向 选取z 在景物附近或景物上取一点P, 在景物附近或景物上取一点 ,将N=P0P (表示矢 表示矢 选为z 称为观察方向。 量)选为 v轴的正向。这里,N称为观察方向。 选为 轴的正向。这里, 称为观察方向

3. 确定 v轴的正向。方法如下: 确定y 轴的正向。方法如下: 选取一个观察正向V,将它投射到过P0并与N垂直的 选取一个观察正向 ,将它投射到过 并与 垂直的 平面上。注意:可任意选取不与N平行的 平行的V。 平面上。注意:可任意选取不与 平行的 。 V yv N Pi 0 xv zv v P0i n u V zv xv

yv

补充说明: 补充说明:

uvn系统 系统

选定V后 建立 轴的另一种方法是: 选定 后,建立yv和xv轴的另一种方法是:由N,V作 作 叉积求出第三个向量U,它垂直于N和 , 叉积求出第三个向量 ,它垂直于 和V,由此确定 xv轴 。然后由 和U作叉积确定与它们垂直的向量 v。 然后由N和 作叉积确定与它们垂直的向量 。

平面。 平面。

观察平面的选取: 轴垂直即与x 观察平面的选取: 与zv轴垂直即与 vyv平面平行的
yv zv i i xv

8.3 用户坐标系到观察坐标系的变换 用户坐标系到观察坐标系的变换——观察变换 观察变换
观察坐标系由用户坐标系中的观察参考点P 观察坐标系由用户坐标系中的观察参考点 0、观察方 和观察正向V定义 向N和观察正向 定义。设 和观察正向 定义。 P0 = ( x0 , y0 , z0 ) N = ( xn , y n , z n )

V = ( xa , y a , z a )
a = (a x , a y , a z )
V a v P0i n u xv zv

记N与V的单位向量为 n = (nx , n y , nz ) 与 的单位向量为 则

n=

N V ,a = N V

yv

u = n × a = (u x , u y , uz ) v = u × n = (v x , v y , v z )

uvn系统

xv zw 于是,根据第 于是,根据第7 章坐标变换公 可得观察变换为: 式,可得观察变换为: yw
1 0 T ( x0 , y0 , z0 )R = 0 x0 0 1 0 y0 0 0 1 z0 0 u x 0 u y 0 u z 1 0 vx vy vz 0

N

zv i P0 xw yv

i P
nx ny nz 0

0 0 0 1



(xe , ye , ze ,1) = (xw , y w , zw ,1)T ( x0 , y0 , z0 ) R

8.4 投影变换
三维物体和二维显示平面不匹配的问题可通过投影 变换解决, 变换解决,也就是把三维物体先变换到二维投影平 然后再变换到显示屏表面。 面,然后再变换到显示屏表面。 一旦将物体的用户坐标转换成观察坐标, 一旦将物体的用户坐标转换成观察坐标,我们就可 以将三维物体投射到二维观察平面上。 以将三维物体投射到二维观察平面上。 存在两种基本的投射方法: 透视投射和平行投射。 存在两种基本的投射方法: 透视投射和平行投射。 透视投影: 坐标点沿着相交于一点(称为投射参考点 透视投影 坐标点沿着相交于一点 称为投射参考点 或投射中心) 的直线被变换到观察平面。 或投射中心 的直线被变换到观察平面。 观察平面(投影平面 观察平面 投影平面) 投影平面 P2 P1 P2’ P1’ i 投射参考点(视点 视点) 投射参考点 视点 (投影中心 投影中心) 投影中心

平行投射(影 坐标点沿着平行线被变换到观察平面。 平行投射 影) :坐标点沿着平行线被变换到观察平面。 观察平面(投影平面 观察平面 投影平面) 投影平面 P2 P1 P2’ P1’

两类投影的本质区别在于: 两类投影的本质区别在于:透视投影的投影中心到投影平面的 距离是有限的, 距离是有限的,而平行投影的投影中心到投影平面的距离是无 限的。 限的。 两类投影的联系在于:当投影中心在无穷远处, 两类投影的联系在于:当投影中心在无穷远处,投影线互相平 这时透视投影变成平行投影。 行,这时透视投影变成平行投影。 定义平行投影时,给出投影方向 称为投影向量 就可以了, 称为投影向量)就可以了 定义平行投影时,给出投影方向(称为投影向量 就可以了,而定 义透视投影时,需要明确地指定投影中心的位置。 义透视投影时,需要明确地指定投影中心的位置。

8.4.1 平行投影
根据投影向量与投影平面的夹角不同, 根据投影向量与投影平面的夹角不同,平行投影可分 为正交平行投影和斜平行投影。 为正交平行投影和斜平行投影。 当投影向量与投影平面垂直时,称为正交平行投影, 当投影向量与投影平面垂直时,称为正交平行投影, 否则称为斜平行投影。 否则称为斜平行投影。 正交平行投影的变换方程很容易求出。假设观察平面位于 正交平行投影的变换方程很容易求出。 zv轴上的 vp处,投射方向与 v轴平行 如下图所示 ,则观 轴上的z 投射方向与z 轴平行(如下图所示 如下图所示), 察坐标系中的任意点(x,y,z)被变换为观察平面上的坐标点 察坐标系中的任意点 被变换为观察平面上的坐标点 (x,y,zvp),而原来的 坐标值保存起来,用作深度检测和可 坐标值保存起来, ,而原来的z坐标值保存起来 见面确定过程中的深度信息。 见面确定过程中的深度信息。 (x,y,z)i yv i (x,y) i zvp xv zv

x p = x, y p = y

当zvp=0,即投影平面为 vyv坐标平面时,zp=0。这时正交平 ,即投影平面为x 坐标平面时, 。 行投影的矩阵表达式为: 行投影的矩阵表达式为:

1 0 (x p , y p , z p ,1) = (x, y, z,1)0 0

0 0 0 1 0 0 0 0 0 0 0 1

8.4.2 透视投影
投影参考点用的是观察坐标系中的三维点。假设投影参 投影参考点用的是观察坐标系中的三维点。 考点位于z 轴上的z 则描述投影线的参数方程为: 考点位于 v轴上的 prp处,则描述投影线的参数方程为:

z′ = z (z z prp )u 0 ≤ u ≤1
zv 其中(x’,y’,z’)表示投影线 表示投影线 其中 段上的任意一点。 段上的任意一点。

x′ = x xu y ′ = y yu

P(x,y,z) i (xp,yp,zvp) i i zvp i zprp 观察平面

在观察平面上, 这时, 在观察平面上, z’=zvp,这时, 投影线与观察平面的 交点坐标为: 交点坐标为:

dp x p = x z z prp dp y p = y z z prp
其中

d p = z prp zvp

表示投影中心与观察平面

之间的距离。 之间的距离。

投影变换的矩阵表达式: 投影变换的矩阵表达式

1 0 (xh , yh , zh , h ) = (x, y, z,1) 0 0

0

0

1 0 0 zvp / d p 0 zvp (z prp / d p )

0 1/ d p z prp / d p 0

x p = xh / h , y p = y h / h
特殊情况: 特殊情况: zvp=0或zprp=0 或
更一般的情况这里不再讨论。 更一般的情况这里不再讨论。

h=

z prp z dp

以上讲解了我们开始提到的三维形体的如下输出 过程: 过程 造型坐标 造型变换 观察变换 投影变换 工作站变换 用户坐标 观察坐标 投影坐标 设备坐标

8.5 观察体与三维裁剪 8.5.1 观察体的定义
在照相时,相机的镜头是决定所拍摄场景大小的一 在照相时, 个因素。在三维显示中, 个因素。在三维显示中, 观察平面上的矩形观察窗 口用于实现这个目标。 口用于实现这个目标。 观察窗口的边 轴平行。 与xvyv轴平行。 窗口边界的位 置是由观察坐 观察平面 标指定的, 标指定的,观 察窗口可以放 在观察平面上 i 的任何位置。 的任何位置。 yv

(xwmax,ywmax) xv

i

zv 投影窗口 (xwmin,ywmin)

给定观察窗口后,我们可以利用窗口的 条边界建立观察 给定观察窗口后,我们可以利用窗口的4条边界建立观察 体。只有位于观察体中的物体才会在输出设备上显示出 所有其他部分将被裁剪掉。 来,所有其他部分将被裁剪掉。 观察体的大小与观察窗口的大小有关; 观察体的大小与观察窗口的大小有关;而其形状与用于 显示的投影类型有关。在任何情况下, 显示的投影类型有关。在任何情况下,观察体的四侧都 是穿过窗口边界的平面。注意: 是穿过窗口边界的平面。注意: 投影中心在观察坐标系 中定义。 中定义。

窗口

窗口

平行投影观察体

投影中心 i 透视投影观察体

通过在z 轴上限制观察体的范围可获得有限观察体。 通过在 v轴上限制观察体的范围可获得有限观察体。具体 方法是: 方法是: 轴上指定与观察平面平行的两个附加边界平面。 在zv轴上指定与观察平面平行的两个附加边界平面。 平行六面体

窗口 Back Plane Front Plane

zv

Frustum 平截头体 窗口 zv

Back Plane Front Plane

i 投影中心

后平面比前平面离投影中心远,且都在投影中心的同一侧。 后平面比前平面离投影中心远,且都在投影中心的同一侧。 包括前后面在内六个面界定出了观察体。 包括前后面在内六个面界定出了观察体。 前后裁剪面的作用: 前后裁剪面的作用: (1)裁剪掉不感兴趣的部分; 裁剪掉不感兴趣的部分; 裁剪掉不感兴趣的部分 (2)在透视投影中,裁剪掉离观察面很近的大物体,这些物 在透视投影中,裁剪掉离观察面很近的大物体, 在透视投影中 体投影到观察窗口中模糊不清; 体投影到观察窗口中模糊不清;后平面裁剪掉远离投影中 心的物体,这部分物体在输出设备上是很小的点。 心的物体,这部分物体在输出设备上是很小的点。

观察平面、 观察平面、前后裁剪面的相对位置关系依赖于投影的类型 以及图形软件包的限制。 以及图形软件包的限制。

8.5.2 三维裁剪
就是确认并存储将在输出设备上显示的观察体内物体 部分,同时舍弃观察体外物体的所有部分。 部分,同时舍弃观察体外物体的所有部分。 三维裁剪与二维裁剪的不同之处: 三维裁剪与二维裁剪的不同之处: 在二维裁剪中,窗口是与x,y轴平行的,这大大简化了 在二维裁剪中,窗口是与 轴平行的, 轴平行的 裁剪在二维裁剪中运算。 裁剪在二维裁剪中运算。但三维裁剪体的裁剪边界是 平面,平面的产生与投影的类型、 平面,平面的产生与投影的类型、投影的窗口及投影 中心的位置有关。 中心的位置有关。 在透视投影中,观察体的前后面与观察平面平行, 在透视投影中,观察体的前后面与观察平面平行,每 个面的z 坐标均为常数, 个面的 坐标均为常数,但其他四个侧面可以具有任 意的空间方向,这给求交运算带来了麻烦。 意的空间方向,这给求交运算带来了麻烦。

1.直接裁剪方法及其缺点 直接裁剪方法及其缺点
这种方法直接对观察体进行裁剪。 这种方法直接对观察体进行裁剪。该方法主要涉及空间 线段与裁剪面的求交运算。设空间线段L的两个端点分 线段与裁剪面的求交运算。设空间线段 的两个端点分 别为P1(x1,y1,z1)和P2(x2,y2,z2),空间中任一平面 的 别为 和 ,空间中任一平面Q的 方程为: 方程为: ax+by+cz+d=0 则L与Q之交点 之交点(x,y,z)应满足: 应满足: 与 之交点 应满足 x=x1+pt y=y1+qt z=z1+rt ax+by+cz+d=0 其中, 其中,p=x2-x1,q=y2-y1, r=z2-z1, 0<=t<=1

求解可得: 求解可得
t = (ax1 + by1 + cz1 + d ) / (ap + bq + cr )

上式中, 在平面Q 上式中,若ap+bq+cr=0,则说明直线 在平面 ,则说明直线L在平面 上或与Q平行 平行。 上或与 平行。 否则,直线与平面相交。 介于 介于0和 之间 之间, 否则,直线与平面相交。若t介于 和1之间,则 可求出相应的交点,否则,交点不在线段上。 可求出相应的交点,否则,交点不在线段上。 这种直接进行三维裁剪的方法的主要缺点是(求 这种直接进行三维裁剪的方法的主要缺点是 求 计算量大。 交)计算量大。 计算量大 一般地,为提高裁剪的效率,我们先将三维观察 一般地,为提高裁剪的效率, 体变换到规范化的投影空间进行裁剪。 体变换到规范化的投影空间进行裁剪。

2. 在规范化空间进行裁剪 这种方法先用规范化变换将原来的观察体变换为 所谓的标准规范体。然后, 所谓的标准规范体。然后,在规范化裁剪体中进 行裁剪操作。 行裁剪操作。 事实上,在观察坐标系中,利用平移、 事实上,在观察坐标系中,利用平移、错切变换 和比例变换就可将三维裁剪空间变换到规范化投 影空间。具体算法这里不做详细介绍。 影空间。具体算法这里不做详细介绍。 根据投影变换的不同, 根据投影变换的不同,规范化裁剪空间分为规范 化平行投影空间和规范化透视投影空间。 化平行投影空间和规范化透视投影空间。

(1) 平行投影的情况 ) 平行六面体

窗口 Back Plane

zv

y 1

1 1 x

前截面

规范化平行投影空间

z

Front Plane

后截面

影 平行六面体 空 间 的 变 换 观察平面

裁 剪 空 间 到 规 范 化 投 与xy平面平行的平面 平面平行的平面 xy平面 平面 投影平面 规范化平行投影空间(立方体 规范化平行投影空间 立方体) 立方体

规范化平行投影空间 投影 xy面 面





xy平面的方 平面的方

(2) 透视投影的情况 ) Frustum 平截头体 窗口 zv Back Plane Front Plane i 投影中心 y=z x=-z 1 f 投影中心 规范化透视投影空间 前截面 x=z z

y

y=-z x

裁 剪 平截头体 空 间 到 规 范 化 投 投影 影 空 间 的 变 平 换 z 投影 z zv xy平 平 平 ; 规范化透视投影空间 规范化透视投影空间

对于平行投影,其规范化投影空间为正四棱柱, 个 对于平行投影,其规范化投影空间为正四棱柱,6个 裁剪面的方程为: 裁剪面的方程为:
x = 1, x = 0 y = 1, y = 0 z = 1, z = 0

对于透视投影,其规范化投影空间为正四棱台, 个 对于透视投影,其规范化投影空间为正四棱台,6个 裁剪面的方程为: 裁剪面的方程为:

x = z, x = z y = z, y = z z = 1, z = f
由于规范化投影空间的六个面都是简单的平面方程, 由于规范化投影空间的六个面都是简单的平面方程, 因而在计算直线与平面的交点时能大大减少计算量。 因而在计算直线与平面的交点时能大大减少计算量。 这就是我们利用规范化投影空间进行三维裁剪, 这就是我们利用规范化投影空间进行三维裁剪,而 不是相对于任意裁剪空间进行裁剪的原因。 不是相对于任意裁剪空间进行裁剪的原因。

3. 裁剪算法 裁剪算法——三维编码裁剪算法 三维编码裁剪算法
二维编码裁剪算法可以直接推广到三维编码裁剪算法,但 二维编码裁剪算法可以直接推广到三维编码裁剪算法, 技术上存在一定的差别。对于三维Cohen-Sutherland裁剪 技术上存在一定的差别。对于三维 裁剪 算法,其关键技术包括: 算法,其关键技术包括: 在观察体内或观察体外。 (1)如何确定一点 在观察体内或观察体外。 )如何确定一点P在观察体内或观察体外 (2)为线段的每个端点赋予区域编码。区分两种情况: )为线段的每个端点赋予区域编码。区分两种情况: (a) 规范化平行观察体; (b) 规范化透视观察体。 规范化平行观察体; 规范化透视观察体。 是一个端点坐标,其位置用一个6位二进制代码 设P(x,y,z) 是一个端点坐标,其位置用一个 位二进制代码 表示(设最左边的位是第1位 表示(设最左边的位是第 位):

(a) 对于规范化平行观察体, 按如下规则设置每位 对于规范化平行观察体 按如下规则设置每位(bit) 规范化平行观察体, 或是0,其中sign(x)是符号函数,即若 是符号函数, 是1或是 ,其中 或是 是符号函数 即若x>0, , sign(x)=1; 否则,sign(x)=0。 ; 否则, 。

Above: bit 1=sign(y-1) Below: bit 2=sign(-y) Right: bit 3=sign(x-1) Left: bit 4=sign(-x) Behind: bit 5=sign(z-1) Front: bit 6=sign(-z) 前截面 y 1 z x 后截面

1 1

(b)对于规范化透视观察体, 对于规范化透视观察体, 对于规范化透视观察体 Above: bit 1=sign(y-z) Below: bit 2=sign(-z-y) Right: bit 3=sign(x-z) Left: bit 4=sign(-z-x) Behind: bit 5=sign(z-1) Front: bit 6=sign(f-1)

y x=-z

y=z

z

1 f 投影中心 前截面

x=z

y=-z x

由此可确定线段的可见性:完全可见、完全不可见、 由此可确定线段的可见性:完全可见、完全不可见、 裁剪候选线段。特别地, 裁剪候选线段。特别地,用这种方法可确定点是否在 体内或体外。 体内或体外。 (3)求线与边界面的交点(略) )求线与边界面的交点(

8.6 三维形体完整的输出过程 不考虑消隐) 三维形体完整的输出过程(不考虑消隐 不考虑消隐 造型坐标 造型变换 观察变换 裁剪空间到规范化 投影空间的变换 三维裁剪 投影变换 工作站变换
规范化观察坐标

用户坐标 观察坐标
规范化观察坐标

投影坐标 设备坐标

在不考虑隐藏面消隐时, 在不考虑隐藏面消隐时,完整的三维观察过程可由以下 步骤实现: 步骤实现: 1. 应用变换 par或Nper将用户坐标变换成规范化的观察坐 应用变换N 标。 2. 在规范化的观察坐标系中应用规范化裁剪空间对物体 进行三维裁剪。 进行三维裁剪。 3. 应用投影变换 应用投影变换Par或Per将裁剪后的物体投射到观察平 或 将裁剪后的物体投射到观察平 面上。 面上。 4. 应用合适的二维观察变换,在二维平面显示三维形体。 应用合适的二维观察变换,在二维平面显示三维形体。

若整体观察变换用V 表示,则上述过程可描述如下: 若整体观察变换用 T表示,则上述过程可描述如下:

VT = N par CL Par V2


VT = N per CL Per V2
其中, 和 指适当的裁剪操作和二维观察变换。 其中,CL和V2指适当的裁剪操作和二维观察变换。

到目前为止,我们描述了如何获得三维形体线框图的过程 到目前为止,我们描述了如何获得三维形体线框图的过程: 三维形体 观察空间的定义及转换

三维裁剪

投影 线框图

习题8 习题
8-1 求线段与规范化观察体的边界表面的交点。(a) 平行 求线段与规范化观察体的边界表面的交点。 投影, 投影,如x=1;(b) 透视投影,如x=z 。 ; 透视投影, 8-2 在三维直角坐标系中,已知投影面为xoy面,投影中 在三维直角坐标系中,已知投影面为 面 心在z 轴的正向、 的位置上, 心在 轴的正向、z=d的位置上,求透视投影变换矩 的位置上 阵。 上机实践题之四: 上机实践题之四 试用程序实现将用户坐标系下的点变换到观察坐标系 下的点。 下的点。


相关文章:
三维软件对比
三维软件对比_机械/仪表_工程科技_专业资料。三维软件对比 目前市场主要三维 CAD/CAM 系统有以下几家高端产品 NX PRO/E CATIA 中端产品 SOLID EDGE 美国 UGS 公...
CAD三维绘图教程与案例,很实用
图 11-3 实体模型 11.2 三维坐标系实例——三维坐标系、长方体、倒角、删除面 AutoCAD 的坐标系统是三维笛卡儿直角坐标系, 分为世界坐标系 (WCS) 和用户坐标...
五大战役、三群联动、三维项目指的是什么?
“五大战役”即重点项目建设、新增长区域发展、小城镇改革发展、城市建设和民生工程等 战役; “三群联动”即产业群、港口群、城市群“三群”联动; “三维项目”...
三维练习图
三维练习图_机械/仪表_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档 三维练习图_机械/仪表_工程科技_专业资料。ug proe catia...
CAD三维快捷键一览
CAD 快捷键一览 创建三维阵列 3A 创建三维面 3F 在三维空间创建由直线段组成的多段线 3P 在二维和三维空间中将某对象与其他对象对齐 AL 加载 AutoLISP、ADS 和...
CAD三维操作教程
CAD三维操作教程_建筑/土木_工程科技_专业资料。CAD三维教学,学习资料绘制三维图形重点与难点:本节重点讲解了三维坐标表示及三维图形观察方法;使用直线、样条曲线、 ...
三维地理信息系统
三维地理信息系统_天文/地理_自然科学_专业资料。1、三维 GIS 在空间分析方面的独特应用三维空间分析除了包括二维 gis 的分析功能外,还应包括针对三维空间对象的特殊...
三维空间的最接近点对问题
三维空间的最接近点对问题刘志辉 (中国民航大学 天津 300300) 摘要:最接近点对问题的求解就是在点集空间中求解最接近的一对点的距离。本 文利用分治策略并结合预...
CAD2010三维绘图基础
? ? ? 三维视图 用户坐标系(UCS) 绘制三维实体 编辑三维实体 中望 CAD 2010 有较强的三维绘图功能,可以用多种方法绘制三维实体,方便的进行 ...
CAD三维快捷键
AUTOCAD 常用三维绘图快捷键 LTS, TOR, WE, 3P, 3F, IN, UNI, SU, EXT, REV, HI, SHA, SL, SEC, INF, 3A, 3DO, ORBIT, RPR, RR, Z, *LTSCALE...
更多相关标签:
三围 | 三维彩超 | 三维地图 | 三维什么时间做 | 三维价格 | 三维学校 | 三维空间 | 三维软件 |