版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章三维观察1. 三维观察坐标系1.1观察坐标系为了在不同的距离和角度上观察物体,需要在用户坐标系下建 立观察坐标系Xv,yv,Zv(通常是右手坐标系)也称(View Reference Coordinate)。如下图所示,其中,点P0(Xo, yo, Z0)为观察参考点(View Reference Point,它是观察坐标系的原点。图1.1用户坐标系与观察坐标系依据该坐标系定义垂直于观察坐标系zv轴的观察平面(viewpalne),有时也称投影平面(projection plane)。图1.2沿Zv轴的观察平面1.2观察坐标系的建立观察坐标系的建立如下图所示:图1.3法矢量的定义观察平面
2、的方向及Zv轴可以定义为观察平面(view plane)N法矢量N:在用户坐标系中指定一个点为观察参考点,然后在此 点指定法矢量N,即Zv轴的正向。法矢量V:确定了矢量N后,再定义观察正向矢量 V,该矢量 用来建立yv轴的正向。通常的方法是先选择任一不平行于N的矢量V',然后由图形系统使该矢量 V'投影到垂直于法矢量 N的平面上, 定义投影后的矢量为矢量V。法矢量U:利用矢量N和V,可以计算第三个矢量 U,对应于 Xz轴的正向。的指定视图投影到显示设备表面上的过程来处理对象的描述。2. 世界坐标系在现实世界中,所有的物体都具有三维特征,但是计算机本身 只能处理数字,显示二维的图
3、形,将三维物体和二维数据联系到一起 的唯一纽带就是坐标。为了使被显示的物体数字化,要在被显示的物 体所在的空间中定义一个坐标系。该坐标系的长度单位和坐标轴的方 向要适合被显示物体的描述。该坐标系被称为世界坐标系,世界坐标 系是固定不变的。OpenGL中世界坐标用来描述场景的坐标,Z+轴垂直屏幕向外,X+从左到右,Y+轴从下到上。世界坐标系是右手笛卡尔坐标系统。 我们用这个坐标系来描述物体及光源的位置。世界坐标系以屏幕中心为原点(0,0,0),长度单位这样来定:窗口范围按此单位恰好是(-1,-1)到(1,1)。3. 世界坐标系到观察坐标系在三维观察流水线中,场景构造完成后的第一步工作是将对象描
4、述变换到观察坐标系中。对象描述的转换等价于将观察坐标系叠加到 世界坐标系的一连串变换。1. 平移观察坐标原点到世界坐标系原点。2. 进行旋转,分别让Xview、yview和Zview轴对应到世界坐标的Xw、 yw、Zw 轴 °如果指定世界坐标点P=(X0,y°,Z0)为观察坐标原点,则将观察坐标 系原点移到世界坐标系原点的变换是一 1 0 0 -X。T0 1 0 -y° 0 0 1 Z0 0 0 01 一将观察坐标系叠加到世界坐标系的组合旋转变换矩阵使用单位向量u、v和n来形成。该变换矩阵为Ux Uy Uz 01r= vx vy vz 0 nx ny nz 0-0
5、001这里,矩阵R的元素是uvn轴向量的分量。将前面的平移和旋转矩阵乘起来获得坐标变换矩阵:ux Uy Uz _ U Po 1M =R T= Vx Vy Vz 一v Po IV! wc.vcInx ny nz - n p。 0001_该矩阵中的平移因子按 u、V、n和Po的向量点积计算而得,Po 代表从世界坐标系原点到观察原点的向量。换句话说,平移因子实在每一轴上的负投影(观察坐标系中的负分量Po)。这些矩阵元素的取值 为u * = xoUx 一 y°uy 一 zoUzU E = XoVxy°Vy zoVzu ? o = xom- y°m z°nz矩阵将
6、世界坐标系中的对象描述变换到观察坐标系。4. 投影变换对象描述变换到观察坐标后,下一阶段是将其投影到观察平面 上。投影变换就是把三维立体(或物体)投射到投影面上得到二维平 面图形。平面几何投影主要指平行投影、 透视投影以及通过这些投影 变换而得到的三维立体的常用平面图形:三视图、轴视图以及透视图。 图形软件一般都支持平行投影和透视投影两种方式。在平行投影中(parallel projection)中,坐标位置沿平行线变换到观 察平面上。图4.1给出了用端点坐标P1和P2描述的线段的平行投影。平行投影保持对象的相关比例不变,这是三维对象计算机辅助绘图和 设计中产生成比例工程图的方法。场景中的平行
7、线在平行投影中显示 成平行的。一般有两种获得对象平行视图的方法: 沿垂直于观察平面 的直线投影,或沿某倾斜角度投影到观察平面。P2.P2'P1pi'图4.1线段到观察平面的平行投影在透视投影(perspective projection)+,对象位置沿会聚到观察平面后一点的直线变换到投影坐标系。图4.2给出了用端点坐标P1和P2描述的线段的透视投影。与平行投影不同的是,透视投影不保持 对象的相关比例。但场景的透视投影真实感教好,因为在透视显示中 较远的对象减小了尺寸。图4.2线段到观察平面的透视投影5.正投影对象描述沿与投影平面法向量平行的方向到投影平面上的变换称为 正投影(o
8、rthogonal projection;或正 交投影, orthographic projection) o这生成一个平行投影变换,其中投影线与投影平面垂 直。正投影常常用来生成对象的前视图、侧视图和顶视图,如图5.1所示,前、侧和后方向的正投影称为立面图,顶部正投影称为 平面图。工程和建筑绘图通常使用正投影,因为可以精确地绘出 长度和角度,并能从图中测量出这些值。图5.1对象的正投影,显示了平面图和立面图6.斜投影斜投影是将三维形体向一个单一的投影面作平行投影,但投影方 向不垂直于投影面所得到的平面图形。 常选用垂直于某个主轴的投影 面,使得平行于投影面的形体表面可以进行距离和角度的测量。
9、斜投具有影的特点:既可以进行测量又可以同时反映三维形体的多个面, 立体效果。常用的斜轴测图有斜等测图和斜二测图,如下图所示技II平图6.1*投彩平投影平面 0/山)料二捆 斜投影斜等侧投影:投影方向与投影平面成 450的斜平行投影,它保持平行投影平面和垂直投影平面的线的投影长度不变。斜二侧投影:与投影平面成arctg(1/2)角的斜平行投影,它使垂直投影平面的线产生长度为原1/2的投影线。7.透视投影透视投影基本符合人类的视觉习惯,同样尺寸的物体离视点 近的比离视点远的大,远到极点即消失。以透视方式在计算机屏 幕上观察物体,就如同透过一个完全透明的四方玻璃片看东西一 样。想象有一条从眼睛到物体
10、的线,这条直线穿过玻璃,并在玻 璃上涂上一个与物体颜色相同的点。如果对所有穿过玻璃的线都 这样做,并且保持眼睛不动,那么玻璃片上的图像就是透视变换 后得到的图像,这块玻璃片就是窗口。正如人眼睛不能聚焦到非 常近或非常远的物体一样,透视投影有 2个剪切面近剪切面 和远剪切面,分别将离视点太近和太远的物体部分或全部地剪切 掉。透视投影的特点是距离视点近的物体大,距离视点远的物体 小,远到极点即为消失。它的观察空间是一个顶部和底部都被切除掉的棱椎,也就是棱台。OpenGL透视投影函数也有两个,其中一个函数是:void glFrustum(GLdouble left,GLdouble Right,GL
11、double bottom,GLdouble top,GLdouble near,GLdouble far);此函数创建一个透视投影的有限观察空间。它的参数只定义近裁 剪平面的左下角点和右上角点的三维空间坐标,即(left, bottom, -near)和(right, top, -near);最后一个参数far是远裁剪平面的 Z负值,其左下角点和右上角点空间坐标由函数根据透视投影原理 白动生成。near和far表示离视点的远近,它们总为正值。另一个函数是:void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLd
12、ouble zFar);它也创建一个透视投影的有限观察空间,但它的参数定义于前面的不同,如图7-39所示,参数fovy定义视野在X-Z平面(垂直方 向上的可见区域)的角度,范围是0.0, 180.0;参数aspect是投影 平面的纵横比(宽度与高度的比值);参数zNear和Far分别是远 近裁剪面沿Z负轴到视点的距离,它们总为正值。视点图7.1透视投影的观察空间8.视口变换和三维屏幕坐标系视口变换类似于照片冲洗过程中的照片裁剪。在计算机图形学中,视口是绘制图像的句型区域。视口以窗口坐标来定义,它表示图像相对于窗口左下角的位置。进行视口变换时,所有顶点都已经经过几何变换,并且位于取景器之外的图像
13、已经被剪切掉了。8.1定义视口打开一个窗口时,系统白动地将视口设置为整个窗口的大小。在OpenGL中可以用glViewport()函数来设置一个较小的绘图区域,该函数的原型如下:void glViewport(GLint x,GLint y,GLsizei width,GLsizei height);该函数的功能是设置窗口。x, y指定一个视口像素矩形的左下角,其初始值是(0,0)。width,height指定一个视口的宽度和高度。当一个OpenGL环境被第一次连接到一个窗口时,参数width和height按此窗口的大小设置。该函数为x和y指定了一种由标准化的设备坐标到窗口坐标的映射几何转化。
14、设(Xnd,ynd)是标准化的设备坐标,则窗口坐标(Xw,yw)可由下式求得:Xw=Xnd1* Xyw=xnd 1半 y视口的宽度和高度被默认为地截断到一定的范围,具体范围值由所处环境决定。可调用函数glGet(GL_MAX_VIEWPORT_DIMS)查询这一范围值。视口的高宽比一般与投影取景器的高宽比相同, 否则会造成图 像的变形。在程序的运行过程中,可能会改变窗口的大小,因此 程序应该始终检测到这种变化,并作相应的处理。8.2变换z坐标在视口变换中,z坐标或深度坐标被编码并被存储起来。在OpenGL中可以使用glDepthRange()函数缩放z坐标的值,使它处 于所要求的范围内。该函数的原型为:void glDepthRange(GLclamped zNear,GLclamped zFar);该函数的功能是指定一种从归一化深度坐标到窗口深度坐标的映射方法。zNear指定从最近的剪切平面到窗口坐标的映射,其缺省值为0.zFar指定从最远的剪切平面到窗口坐标的映射,其缺 省值为1。深度坐标在剪切和除以w后,其范围将变为-1,1。其中-1和1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色建筑钢筋绑扎与回收利用合同4篇
- 江苏省无锡市锡山区2019-2020学年八年级下学期期中物理试题【含答案、解析】
- 2025版房屋抵押贷款风险评估与咨询服务合同4篇
- 股权代持合同签订与解除的法律要点2025年合同2篇
- 江西省赣州市瑞金市2024-2025学年八年级上学期期末考试道德与法治试题(含答案)
- 广东省茂名市电白区2024-2025学年八年级上学期期末地理试卷(含答案)
- 固体饮料行业的融资模式与投资机会分析报告考核试卷
- 2025版企业知识产权保护委托合同范本指南3篇
- 东南欧eMAG知识百科 2025
- 2001年江苏南通中考满分作文《我发现女孩也可做“太阳”》
- 《健康体检知识》课件
- 苏少版七年级美术下册 全册
- 名表买卖合同协议书
- JTG-T-F20-2015公路路面基层施工技术细则
- 2024年辽宁石化职业技术学院单招职业适应性测试题库附答案
- 中西方校服文化差异研究
- 《子宫肉瘤》课件
- 《准妈妈衣食住行》课件
- 给男友的道歉信10000字(十二篇)
- 客人在酒店受伤免责承诺书范本
- 练字本方格模板
评论
0/150
提交评论