当前位置:
文档之家› 计算机图形学简明教程_第5章
计算机图形学简明教程_第5章
5.1.3 任意坐标系到观察坐标系的变换
图5.6 一点透视
图5.7两点透视
图5.8 三点透视
1)在图5.6中,投影平面是 z 0 ,其法线方向是(0,0,1),长方体的 棱和坐标轴平行,投影平面切割 z 轴,此时无论如何选择视点的位臵, 只能产生一个灭点。因为此时平行于 x轴和 y 轴的直线也平行于投影平 面,不产生灭点。 2)当投影平面的法线方向是(1,0,1)时,投影平面切割 x 和 z 轴, 则可得到两点透视. 3)当投影平面的法线方向是(1,1,1)时,投影平面切割x 、y 和
齐次坐标形式为
xvq A 0 y 0 C vq qv 0 0
其中
B xq D yq 1 q
xq xwq, yq ywq
5.5 连续变换的处理
设在世界坐标系中的变换合并成一个4×4矩阵T1, 变换为
( x, y , z ,1) T ( x, y, z ,1)
T 1
T q q 2
T
(5.13)
( x , y , q) T ( x, y, z,1)
T2是一个3×4的矩阵,投影变换是
T
(5.14)
( x , y , q ) T ( x , y , q)
T vq vq v 3 q q
i U N xu xn j yu yn k zu b1i b2j b3k zn
则 i (a11 , a12 , a13 ) (b1 , b2 , b3 )
b12 b22 b32
轴的单位向量的向量积, oz
o y 轴的单位方向向量应是 o x 和
因此
j (a21 , a22 , a23 ) (a13a32 a12a33 , a11a33 a13a31 , a12a31 a11a32 )
观察变换
可以建立—个观察坐标系,简化投影变换。但在投影前必 须首先将物体从世界坐标系变换到观察坐标系中来
transform.lookAt(new Point3d(0,0,12),new Point3d(0,0,0),new Vector3d(0,1,0)); //设定观察点的位置
计算机图形学简明教程
第五章 三维空间的观察
综
述
以不同的方式观察物体,看到的画面是不一样的。在此, 我们将看到的画面称为视图。
视图不仅仅与物体的大小形状有关,还与观察者眼睛的 位臵、观察方向有关。 三维空间的观察比二维的复杂其概念模型如下:
本章的学习目的是讨论投影的数学表示和三维观察中的 投影,视见体到规范视见体的变换,用三维规范体裁剪.
sq sq s 4 3 2 1
T
投影到屏幕上坐标的计算
( xsq , ysq , qs )T T4T3T2T1 ( x, y, z,1)T T( x, y, z,1)T
(5.17)
在对图形变换以前,先要算出T,输出每一个图形 元素时,只要作一次矩阵向量乘法式(5.17),就得 点在屏幕坐标系中的坐标.
p( x p , yp ,0)
式(5.2)写成齐次坐标表达式为
5.1.2平行投影
※平行投影可以看成投影中心移向无穷远时的情况. 分成正投影和斜投影 ※正投影:投影方向与投影平面法向相同.包括前视图 投影,俯视图投影,侧视图投影,等轴测投影. ※斜投影:投影方向与投影平面法向想反.包括斜等测 投影和斜二测投影. 三视图和斜透视分别如图5.4和图5.5所示.
xs xsq qs , ys ysq qs
(5.18)
如果不需要作投影变换,例如显示对象本身是二 维的,或是平行投影,那么式(5.18)可直接写成
xs xsq ,
ys ysq
5.6 Java3D图形变换
5.6.1 Java3D中的图形变换 ※模型变换 ※观察变换 ※投影变换 ※视口变换
计算x0, y0, z0和aij(i, j =1, 2, 3)的方法
设 在 和 轴上的垂直投影分别为 和 ,则
通过坐标变换则式5.7可写成齐次坐标表达式为
计算x0, y0, z0和aij(i, j =1, 2, 3)的方法
把式5.8代入5.3可得
计算x0, y0, z0和aij(i, j =1, 2, 3)的方法
i, j和k分别为ox, oy, oz轴的单位方向向量 求解 o z 轴单位向量,和N方向一致,故有
k (a31 , a32 , a33 ) ( xn , yn , zn )
2 2 2 xn y n z n
计算x0, y0, z0和aij(i, j =1, 2, 3)的方法
o x 轴和向量U×N方向一致如图5.10,设
yv VB WT WB VT VB
y p WB
5.4 窗口到视口的变换
整理得
xv=Axp + B yv=Cyp + D
(5.12) 其中
VR VL A , B VL A WL WR WL VT VB C , D VB C WB WT WB
5.1.1透视投影
在坐标系 o x yz 中来讨论投影,假定投影平面是z 0 , 设视点为 C ( xc , yc , zc ) ,空间中任一点 Q ( x , y, z ) 在 z 0 平面上的投影为
P ( x p , y p , 0)
图5.3示
透视投影的计算公式
整理后便有
这两式便是透视投影的计算公式。把空间任一点 ( x , y , z ) 的坐标代入式(5.2)便可求出在平面 z 0 上的投影点
5.2.1平行投影视见体的规范化
假设图5.11中 在坐标系 则转换步骤和图示如下: 中的坐标为 ,
5.2.1平行投影视见体的规范化
Step 1:把点P1移到坐标原点,其变换矩阵为S1
Step 2:经过对平行六面体作方向切变,使它成为一个 长方体,由图5.14可得切变矩阵S2
5.2.1平行投影视见体的规范化
所示.
投影平面是任意平面的问题
设 ( xo , yo , zo ) 是点 o 在坐标系oxyz中的坐标, x , y o o 和o z 轴的单位方向向量为 (a11 , a12 , a13 ) 、 (a21 , a22 , a23 ) 和 (a31 , a32 , a33 ) ,那么从坐标系oxyz到 o x yz 的变换是
5.3 用三维规范体裁剪
将Sutherland-Cohen算法推广到三维,对于空间一点 可以得到区域码从右到左对应的二进制位 bit1=1,如果 : bit2=1,如果: bit3=1,如果: bit4=1,如果: bit5=1,如果: Bit6=1,如果:
例子:空间直线的裁剪
1)设线段的两个端点为 参数方程为: 和 ,它的
Step 3:把Step的长方体变为规范长方体,变换矩阵为s3;
Step 4:分别沿 和 轴的负方向平移一个单位的变换 矩阵为s4.
因此由任意平行六面体视见体到规范化长方体视见体的变换为:
5.2.2 透视投影视见体的规范化
和平行投影的变换相似,通过四步变换可把图5.12 中的棱台变成图5.13(b)中的棱台.
本章内容
投影 视见体到规范视见体的变换 用三维规范体裁剪 窗口到视口的变换 连续变换的处理 Java3D图形变换
5.1 投影
●投影变换的概念:由于显示器和绘图机只能用二 维空间表示图形,这就需要我们把三维坐标表示 的几何体变换成二维坐标表示的图形,这就是图 形的投影变换.简单的说投影是把n维坐标系中 的点变换成小于n维的坐标系中的点.
(a31 , a32 , a33 ) ?
计算x0, y0, z0和aij(i, j =1, 2, 3)的方法
x0 x r d x n y0 yr d yn z0 zr d zn
2 2 2 xn y n z n 2 2 2 xn y n z n 2 2 2 xn y n z n
T sq sq s 4 vq vq v
T3是3×3矩阵,窗口至视区的变换是
T
(5.15)
T
到物理设备坐标的变换式为 (x , y , q ) T (x , y , q )
T T
(5.16)
(5.13)式至(5.16)式合并起来其中T=T4T3T2T1是一个3×4矩阵。
( x , y , q ) T T T T ( x, y, z,1) T( x, y, z,1)
z 轴,可得到三点透视.
投影平面是任意平面的问题
在坐标系oxyz中来讨论投影平面是任意平面的问题。 为了确定一个投影面,我们 需 要 给 定 一 个 参 考 点 R( xr , yr , zr ) ,投影平面的法 线方向 N ( xn , yn , zn ) ,和一个常数 d。取过 o 点,沿 N方向作的射 线定为 o z 轴. 因为要指定 o y 的方向,为此 要给定一个向量 U ( xu , yu , zu ) , U在投影平面上的垂直投影所指 的方向便是o y 轴的方向。 是z和y叉乘出来的如图5.9
三视图和斜透视
5.1.2 平行投影
设投影方向为 面上的投影为 空间点 那么下式成立 在投影平
式(5.5)为平行投影的公式,写成齐次坐标表达式为
5.1.3 任意坐标系到观察坐标系的变换
灭点 灭点 灭点 灭点 灭点
视点
视点 视点 灭点
灭点:一组不平行于投影平面的平行线,经过透视投影后 相交于一点,该点称为灭点。 在三维空间中,平行线只在无穷远点相交,因而灭点可看 做三维空间的无穷远点在投影平面上的投影点。 主灭点:如果这组平行线平行于坐标轴,这时的灭点称为 主灭点。至多存在三个这样的主灭点,分别对应于投影平 面切割的坐标轴的数目。 如上所示,透视投影按主灭点的个数分为一点透视、二点 透视和三点透视。