三维坐标变换.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章三维观察
1.三维观察坐标系
1.1观察坐标系
为了在不同的距离和角度上观察物体,需要在用户坐标系下建立观察坐标系x v,y v,z v(通常是右手坐标系)也称(View Reference Coordinate)。如下图所示,其中,点p0(x o, y o, z0)为观察参考点(View Reference Point),它是观察坐标系的原点。
图1.1 用户坐标系与观察坐标系
依据该坐标系定义垂直于观察坐标系z v轴的观察平面(view palne),有时也称投影平面(projection plane)。
图1.2 沿z v轴的观察平面
1.2观察坐标系的建立
观察坐标系的建立如下图所示:
图1.3 法矢量的定义
观察平面的方向及z v轴可以定义为观察平面(view plane)N
法矢量N: 在用户坐标系中指定一个点为观察参考点,然后在此点指定法矢量N,即z v轴的正向。
法矢量V:确定了矢量N后,再定义观察正向矢量V,该矢量用来建立y v轴的正向。通常的方法是先选择任一不平行于N的矢量V',然后由图形系统使该矢量V'投影到垂直于法矢量N的平面上,定义投影后的矢量为矢量V。
法矢量U:利用矢量N和V,可以计算第三个矢量U,对应于x z轴的正向。
的指定视图投影到显示设备表面上的过程来处理对象的描述。2.世界坐标系
在现实世界中,所有的物体都具有三维特征,但是计算机本身只能处理数字,显示二维的图形,将三维物体和二维数据联系到一起的唯一纽带就是坐标。为了使被显示的物体数字化,要在被显示的物体所在的空间中定义一个坐标系。该坐标系的长度单位和坐标轴的方向要适合被显示物体的描述。该坐标系被称为世界坐标系,世界坐标系是固定不变的。
OpenGL 中世界坐标用来描述场景的坐标,Z+轴垂直屏幕向外,
X+从左到右,Y+轴从下到上。世界坐标系是右手笛卡尔坐标系统。
我们用这个坐标系来描述物体及光源的位置。世界坐标系以屏幕中心
为原点(0,0,0),长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)
到(1,1)。
3. 世界坐标系到观察坐标系
在三维观察流水线中,场景构造完成后的第一步工作是将对象描
述变换到观察坐标系中。对象描述的转换等价于将观察坐标系叠加到
世界坐标系的一连串变换。
1. 平移观察坐标原点到世界坐标系原点。
2. 进行旋转,分别让x view 、y view 和z view 轴对应到世界坐标的x w 、
y w 、z w 轴。
如果指定世界坐标点P=(x 0,y 0,z 0)为观察坐标原点,则将观察坐标
系原点移到世界坐标系原点的变换是
⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡---=T 1000100010001000z y x 将观察坐标系叠加到世界坐标系的组合旋转变换矩阵使用单位
向量u 、v 和n 来形成。该变换矩阵为
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢
⎣⎡=1000000n n n v v v u u u z
y x
z y x
z y x R
这里,矩阵R 的元素是uvn 轴向量的分量。
将前面的平移和旋转矩阵乘起来获得坐标变换矩阵:
T ⋅=M R vc wc .=⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡⋅-⋅-⋅-1000000p n n n n p v v v v p u u u u z
y x z y x z y x
该矩阵中的平移因子按u 、v 、n 和P 0的向量点积计算而得,P 0
代表从世界坐标系原点到观察原点的向量。换句话说,平移因子实在
每一轴上的负投影(观察坐标系中的负分量P 0)。这些矩阵元素的取值
为
⋅-u u z u y u x z y x 0000--
-=P v z v y v x u z y x 0000--
-=⋅-P n z n y n x u z
y x 0000---=⋅-P 矩阵将世界坐标系中的对象描述变换到观察坐标系。
4. 投影变换
对象描述变换到观察坐标后,下一阶段是将其投影到观察平面
上。投影变换就是把三维立体(或物体)投射到投影面上得到二维平
面图形。平面几何投影主要指平行投影、透视投影以及通过这些投影
变换而得到的三维立体的常用平面图形:三视图、轴视图以及透视图。 图形软件一般都支持平行投影和透视投影两种方式。
在平行投影中(parallel projection)中,坐标位置沿平行线变换到观
察平面上。图4.1给出了用端点坐标P1和P2描述的线段的平行投影。
平行投影保持对象的相关比例不变,这是三维对象计算机辅助绘图和设计中产生成比例工程图的方法。场景中的平行线在平行投影中显示成平行的。一般有两种获得对象平行视图的方法:沿垂直于观察平面的直线投影,或沿某倾斜角度投影到观察平面。
P2
P1
图4.1 线段到观察平面的平行投影
在透视投影(perspective projection)中,对象位置沿会聚到观察平面后一点的直线变换到投影坐标系。图4.2给出了用端点坐标P1和P2描述的线段的透视投影。与平行投影不同的是,透视投影不保持对象的相关比例。但场景的透视投影真实感教好,因为在透视显示中较远的对象减小了尺寸。
图4.2 线段到观察平面的透视投影
5.正投影
对象描述沿与投影平面法向量平行的方向到投影平面上的变换称
为正投影(orthogonal projection;或正交投影,orthographic projection)。这生成一个平行投影变换,其中投影线与投影平面垂直。正投影常常用来生成对象的前视图、侧视图和顶视图,如图
5.1所示,前、侧和后方向的正投影称为立面图,顶部正投影称为
平面图。工程和建筑绘图通常使用正投影,因为可以精确地绘出长度和角度,并能从图中测量出这些值。
图5.1 对象的正投影,显示了平面图和立面图
6.斜投影
斜投影是将三维形体向一个单一的投影面作平行投影,但投影方向不垂直于投影面所得到的平面图形。常选用垂直于某个主轴的投影面,使得平行于投影面的形体表面可以进行距离和角度的测量。斜投影的特点:既可以进行测量又可以同时反映三维形体的多个面,具有立体效果。常用的斜轴测图有斜等测图和斜二测图,如下图所示。