ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:114.38KB ,
资源ID:11690424      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11690424.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(三维坐标变换.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

三维坐标变换.docx

1、三维坐标变换第二章 三维观察1. 三维观察坐标系1.1观察坐标系 为了在不同的距离和角度上观察物体,需要在用户坐标系下建立观察坐标系xv,yv,zv(通常是右手坐标系)也称(View Reference Coordinate)。如下图所示,其中,点p0(xo, yo, z0)为观察参考点(View Reference Point),它是观察坐标系的原点。图1.1 用户坐标系与观察坐标系依据该坐标系定义垂直于观察坐标系zv轴的观察平面(view palne),有时也称投影平面(projection plane)。图1.2 沿zv轴的观察平面 1.2观察坐标系的建立 观察坐标系的建立如下图所示:图

2、1.3 法矢量的定义 观察平面的方向及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,y0,z0)为观察坐标原点,则将观察坐标系原点移到世界坐标系原点的变换是将观察坐标系叠加到世界坐标系的组合旋转变换矩阵使用单位向量u、v和n来形成。该变换矩阵为这里,矩阵R的元素是uvn轴向量的分量。将前面的平移和旋转矩阵乘起来获得坐标变换矩阵:=该矩阵中的平移因子按u、v、n和P0的向量点积计算而得,P0代表从世界坐标系原点到观察原点的向量。换句话说,平

5、移因子实在每一轴上的负投影(观察坐标系中的负分量P0)。这些矩阵元素的取值为矩阵将世界坐标系中的对象描述变换到观察坐标系。4. 投影变换对象描述变换到观察坐标后,下一阶段是将其投影到观察平面上。投影变换就是把三维立体(或物体)投射到投影面上得到二维平面图形。平面几何投影主要指平行投影、透视投影以及通过这些投影变换而得到的三维立体的常用平面图形:三视图、轴视图以及透视图。 图形软件一般都支持平行投影和透视投影两种方式。 在平行投影中(parallel projection)中,坐标位置沿平行线变换到观察平面上。图4.1给出了用端点坐标P1和P2描述的线段的平行投影。平行投影保持对象的相关比例不变

6、,这是三维对象计算机辅助绘图和设计中产生成比例工程图的方法。场景中的平行线在平行投影中显示成平行的。一般有两种获得对象平行视图的方法:沿垂直于观察平面的直线投影,或沿某倾斜角度投影到观察平面。图4.1 线段到观察平面的平行投影在透视投影(perspective projection)中,对象位置沿会聚到观察平面后一点的直线变换到投影坐标系。图4.2给出了用端点坐标P1和P2描述的线段的透视投影。与平行投影不同的是,透视投影不保持对象的相关比例。但场景的透视投影真实感教好,因为在透视显示中较远的对象减小了尺寸。图4.2 线段到观察平面的透视投影5. 正投影对象描述沿与投影平面法向量平行的方向到投

7、影平面上的变换称为正投影(orthogonal projection;或正交投影,orthographic projection)。这生成一个平行投影变换,其中投影线与投影平面垂直。正投影常常用来生成对象的前视图、侧视图和顶视图,如图5.1所示,前、侧和后方向的正投影称为立面图,顶部正投影称为平面图。工程和建筑绘图通常使用正投影,因为可以精确地绘出长度和角度,并能从图中测量出这些值。图5.1 对象的正投影,显示了平面图和立面图6. 斜投影斜投影是将三维形体向一个单一的投影面作平行投影,但投影方向不垂直于投影面所得到的平面图形。常选用垂直于某个主轴的投影面,使得平行于投影面的形体表面可以进行距离

8、和角度的测量。斜投影的特点:既可以进行测量又可以同时反映三维形体的多个面,具有立体效果。常用的斜轴测图有斜等测图和斜二测图,如下图所示。图6.1 斜投影斜等侧投影:投影方向与投影平面成450的斜平行投影,它保持平行投影平面和垂直投影平面的线的投影长度不变。斜二侧投影:与投影平面成arctg(1/2)角的斜平行投影,它使垂直投影平面的线产生长度为原1/2的投影线。7. 透视投影透视投影基本符合人类的视觉习惯,同样尺寸的物体离视点近的比离视点远的大,远到极点即消失。以透视方式在计算机屏幕上观察物体,就如同透过一个完全透明的四方玻璃片看东西一样。想象有一条从眼睛到物体的线,这条直线穿过玻璃,并在玻璃

9、上涂上一个与物体颜色相同的点。如果对所有穿过玻璃的线都这样做,并且保持眼睛不动,那么玻璃片上的图像就是透视变换后得到的图像,这块玻璃片就是窗口。正如人眼睛不能聚焦到非常近或非常远的物体一样,透视投影有2个剪切面近剪切面和远剪切面,分别将离视点太近和太远的物体部分或全部地剪切掉。透视投影的特点是距离视点近的物体大,距离视点远的物体小,远到极点即为消失。它的观察空间是一个顶部和底部都被切除掉的棱椎,也就是棱台。OpenGL透视投影函数也有两个,其中一个函数是:void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble t

10、op,GLdouble near,GLdouble far);此函数创建一个透视投影的有限观察空间。它的参数只定义近裁剪平面的左下角点和右上角点的三维空间坐标,即(left,bottom,-near)和(right,top,-near);最后一个参数far是远裁剪平面的Z负值,其左下角点和右上角点空间坐标由函数根据透视投影原理自动生成。near和far表示离视点的远近,它们总为正值。另一个函数是: void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar);它也创建一个透视投影的有限观察空间,

11、但它的参数定义于前面的不同,如图7-39所示,参数fovy定义视野在X-Z平面(垂直方向上的可见区域)的角度,范围是0.0, 180.0;参数aspect是投影平面的纵横比(宽度与高度的比值);参数zNear和Far分别是远近裁剪面沿Z负轴到视点的距离,它们总为正值。图7.1 透视投影的观察空间8. 视口变换和三维屏幕坐标系视口变换类似于照片冲洗过程中的照片裁剪。在计算机图形学中,视口是绘制图像的句型区域。视口以窗口坐标来定义,它表示图像相对于窗口左下角的位置。进行视口变换时,所有顶点都已经经过几何变换,并且位于取景器之外的图像已经被剪切掉了。8.1 定义视口 打开一个窗口时,系统自动地将视口

12、设置为整个窗口的大小。在OpenGL中可以用glViewport()函数来设置一个较小的绘图区域,该函数的原型如下:void glViewport(GLint x,GLint y,GLsizei width,GLsizei height);该函数的功能是设置窗口。x,y指定一个视口像素矩形的左下角,其初始值是(0,0)。width,height指定一个视口的宽度和高度。当一个OpenGL环境被第一次连接到一个窗口时,参数width和height按此窗口的大小设置。该函数为x和y指定了一种由标准化的设备坐标到窗口坐标的映射几何转化。设(xnd,ynd)是标准化的设备坐标,则窗口坐标(xw,yw)

13、可由下式求得:视口的宽度和高度被默认为地截断到一定的范围,具体范围值由所处环境决定。可调用函数glGet(GL_MAX_VIEWPORT_DIMS)查询这一范围值。视口的高宽比一般与投影取景器的高宽比相同,否则会造成图像的变形。在程序的运行过程中,可能会改变窗口的大小,因此程序应该始终检测到这种变化,并作相应的处理。8.2 变换z坐标 在视口变换中,z坐标或深度坐标被编码并被存储起来。在OpenGL中可以使用glDepthRange()函数缩放z坐标的值,使它处于所要求的范围内。该函数的原型为:void glDepthRange(GLclamped zNear,GLclamped zFar);

14、该函数的功能是指定一种从归一化深度坐标到窗口深度坐标的映射方法。zNear指定从最近的剪切平面到窗口坐标的映射,其缺省值为0.zFar指定从最远的剪切平面到窗口坐标的映射,其缺省值为1。深度坐标在剪切和除以w后,其范围将变为-1,1。其中-1和1分别与最近和最远的剪切平面相对应。该函数将指定该范围内从归一化深度坐标到窗口深度坐标的一种线性映射。不管具体实现的实际深度缓冲区如何,窗口坐标中的深度值将被看做其范围是0,1。因此,该函数得到的值将首先被截断到这一范围内。这里,0和1被分别映射成最近和最远的剪切平面。在这种映射下,深度缓冲区的范围可以被完全利用。思考题:1、 用户坐标系是什么坐标系?2、 创建透视投影的OpenGL函数有哪些?并比较其不同点。3、 简单说明斜等侧投影和斜二侧投影的区别。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1