投影矩阵的计算过程

投影矩阵的计算过程
投影矩阵的计算过程

投影矩阵的计算过程3d模型经过世界坐标变换、相机坐标变换后,下一步需要投影变换。投影变换的目的就是要把相机空间转换到标准视图空间,在这个空间的坐标都是正规化的,也就是坐标范围都在[-1,1]之间,之所以转换到这个空间是为了后续操作更方便。下面的讨论都是以列向量来表示,这样在变换操作时,采用的是矩阵左乘法,如果采用的是行向量的话,那就相反,矩阵右乘法即是向量在左边乘以变换矩阵。采用哪种表示并不影响结果,只需要把该种表示下得出的变换矩阵转置一下,就是采用另外一种表示模式需要的结果。常见的投影有两种,正交投影和透视投影,正交投影相对来说更简单,所以先来看看正交投影。最简单的正交变换矩阵 1 0 0 0 0 1 0 0 0 0 0 1 这个正交变换是不可逆变换,变换后x和y保留,z变成了0,在实际应用中,更常见的情况是限定x、y、z在一定的范围内的进行投影变换,比如x[l,r],y[b,t],z[n,f]。那么要把这段空间中的点变换到-1和1之间,只要完成两个变换,首先把坐标轴移到中心,然后进行缩放就可以了。采用列向量的话,那就是缩放矩阵乘以平移矩阵。2/(r-l) 0 0 0 1 0 0 -(r+l)/2 2/(r-l) 0 0 -(r+l)/(r-l) 0 2/(t-b) 0 0 x 0 1 0 -(b+t)/2 = 0 2/(t-b) 0 -(t+b)/(t-b) 0 0 2/(f-n) 0 0 0 1 -(n+f)/2 0 0 2/(f-n) -(f+n)/(f-n) 0 0 0 1 0 0 0 1 0 0 0 1 透视投影类比于我们人眼系统,看一个物体,会有远小近大的效果。在转换到相机空间后,相机是这个空间的原点,和正交投影体是一个长方体或者立方体不同,透视投影体是一个锥体被近平面截取掉头部剩下的空间。假定仍然采用上面的坐标表示。在透视投影下,空间上面的任何一点P投影到近平面上某点q,通过三角几何学我们可以得到qx=px*n/pz ,y点同理。假定直接投影到近平面,则该矩阵很简单,用Ma表示下面的矩阵1 0 0 0 0 1 0 0 0 0 1 0 0 0 1/n 0 则齐次空间某点(x,y,z ,1)被该矩阵转换后变成了(x ,y z, z/n) ,除以z/n,则变成了(nx/z,ny/z,n ,1) 正好吻合上面的公式。

undefined

但是我们知道投影变换需要把坐标变换到-1和1之间,假定先不考虑z轴的变换,在x轴和y轴上面经过上述变换后,已经投影在近平面了,假设近平面xy在[l,r] 和[b,t]之间了,因此只需要和上面的正交投影一样,进行平移和缩放操作就可以了,平移矩阵Mb为 1 0 0 -(l+r)/2 0 1 0 -(t+p)/2 0 0 1 -(f+n)/2 0 0 0 1 以及缩放矩阵Mc 2/(r-l) 0 0 0 0 2/(t-b) 0 0 0 0 2/(f-n) 0 0 0 0 1 McXMbXMa 得到的矩阵为2/(r-l) 0 -(r+l)/(n*(r-l))0 0 2/(t-b) -(t+b)/(n*(t-b)) 0 0 0 j k 0 0 1/n 0 j k 为未知数,这个矩阵也可以同时乘以n,则变为2n/(r-l) 0 -(r+l)/(r-l) 0 0 2n/(t-b) -(t+b)/(t-b) 0 0 0 j k 0 0 1 0 为了求解J k,我们需要把z变换到-1 和1 因此当z=n时为-1,z=f时为1 (j*n+k)/n= j+k/n=-1; 同理j+k/f=1; 得到k=2f*n/(n-f) j=-(n+f)/(n-f) 代入上面的矩阵,就得出通用的正交变换矩阵。而且在一般情况下r=-l ,b=-t

因此上述矩阵可以简化为n/r 0 0 0 0 n/t 0 0 0 0 -(n+f)/(n-f) 2f*n/(n-f) 0 0 1 0 n/r 和n/t可以进一步简化成水平半视角和垂直半视角的三角函数来表示,而水平视角和垂直视角和透视窗口的宽高比有是成正比的,最终上面两行可以用宽高

比和某个半视角的余切来表示。这是在列向量情况下得出的投影矩阵,如果采用行向量,只需要把上面的矩阵转置一下即可

投影定义与坐标转换

GIS/RS在地理学中的应用 一、作业题目:基础03 坐标定义与投影变换 时间:2018 年9 月20 日 一、作业内容及要求概述 基础03 坐标定义与投影变换 1.数据文件 ① idll.shp,(Idaho 州的轮廓图) ② stationsll.shp,(Idaho 州的滑雪道) ③ snow.txt,(Idaho 州 40 个滑雪场的经纬度值) 2.GIS操作 ①按要求更改文件投影的 ②给文件定义投影 ③用经纬度信息文本生成指定投影地点分布图 3. 作业报告总结以下内容 ①将 idll.shp 的投影变换为Idaho 州横轴麦卡托坐标系( Idaho Transverse Mercator, IDTM)IDTM参数设置如下: Projection Transverse Mercator Datum NAD83 Units meters Parameters scale factor: 0.9996 central meridian: -114.0 reference latitude: 42.0

false easting: 2,500,000 false northing: 1,200,000 ②将IDTM坐标系统应用到stationsll.shp 上 用snow.txt 生成一个UTM投影(Nad 1983UTM Zone11N)的滑雪场分布图 二、工作方法及技术流程 (思路、方法、主要操作步骤、技术流程等) ①将 idll.shp 的投影变换为Idaho 州横轴麦卡托坐标系 1:右键单击属性,查看idll属性其坐标系统信息。元数据页中坐标系统已经为GCS_North_American_1927 2:接下来将idll.shp投影到IDTM坐标系统。在ArcToolbox中Data Manager Tools =>Projections and Transformations=>Features=>Project

矩阵投影与最小二乘方法

题目:《神奇的矩阵——矩阵投影与最小二乘方法》 学校:哈尔滨工程大学 姓名:黎文科 联系方式: QQ群:53937814 联系方式: 190356321@https://www.360docs.net/doc/4a15993434.html,

矩阵投影与最小二乘方法 最小二乘法(Least Squares Method,简记为LSE)是一个比较古老的方法,源于天文学和测地学上的应用需要。在早期数理统计方法的发展中,这两门科学起了很大的作用。丹麦统计学家霍尔把它们称为“数理统计学的母亲”。此后近三百年来,它广泛应用于科学实验与工程技术中。美国统计史学家斯蒂格勒( S. M. Stigler)指出, 最小二乘方法是19世纪数理统计学的压倒一切的主题。1815年时,这方法已成为法国、意大利和普鲁士在天文和测地学中的标准工具,到1825年时已在英国普遍使用。 追溯到1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。时年24岁的高斯也计算了谷神星的轨道。奥地利天文学家海因里希·奥尔伯斯根据高斯计算出来的轨道重新发现了谷神星。高斯于其1809年的著作《关于绕日行星运动的理论》中。在此书中声称他自1799年以来就使用最小二乘方法,由此爆发了一场与勒让德的优先权之争。 近代学者经过对原始文献的研究,认为两人可能是独立发明了这个方法,但首先见于书面形式的,以勒让德为早。然而,现今教科书和著作中,多把这个发明权归功于高斯。其原因,除了高斯有更大的名气外,主要可能是因为其正态误差理论对这个方法的重要意义。勒让德在其著作中,对最小二乘方法的优点有所阐述。然而,缺少误差分析。我们不知道,使用这个方法引起的误差如何,就需建立一种误差分析理论。高斯于1823年在误差e 1 ,… , e n 独立同分布的假定下,证明了最小二乘方法的一个最优性质: 在所有无偏的线性估计类中,最小二乘方法是其中方差最小的!在德国10马克的钞票上有高斯像,并配了一条正态曲线。在高斯众多伟大的数学成就中挑选了这一条,亦可见这一成就对世界文明的影响。 现行的最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出的。它的主要思想就是选择未知参数,使得理论值与观测值之差的平方和达到最小: 2 211 ()()m m i i i H y y ===-=-∑∑理论值观测值

透视投影与正投影相关函数介绍

OpenGL 入门纪录--2 .透视函数glFrustum(), gluPerspective()函数用法和glOrtho()函数用 法 2008-12-24 16:14 在OpenGL中,如果想对模型进行操作,就要对这个模型的状态(当前的矩阵)乘上这个操作对应的一个矩阵. 如果乘以变换矩阵(平移, 缩放, 旋转), 那相乘之后, 模型的位置被变换; 如果乘以投影矩阵(将3D物体投影到2D平面), 相乘后, 模型的投影方式被设置; 如果乘以纹理矩阵(), 模型的纹理方式被设置. 而用来指定乘以什么类型的矩阵, 就是glMatriMode(GLenum mode); glMatrixMode有3种模式: GL_PROJECTION 投影, GL_MODELVIEW 模型视图, GL_TEXTURE 纹理. 所以,在操作投影矩阵以前,需要调用函数: glMatrixMode(GL_PROJECTION); //将当前矩阵指定为投影矩阵 然后把矩阵设为单位矩阵: glLoadIdentity(); 然后调用glFrustum()或gluPerspective(),它们生成的矩阵会与当前的矩阵相乘,生成透视的效果; 1.glFrustum() 这个函数原型为: void glFrustum(GLdouble left, GLdouble Right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); 创建一个透视型的视景体。其操作是创建一个透视投影的矩阵,并且用这个矩阵乘以当前矩阵。这个函数的参数只义近裁剪平面的左下角点和右上角点的三维空间坐标,即(left,bottom,-near)和(right,top,-near);最后一个参数far是远裁剪平面的离视点的距离值,其左下角点和右上角点空间坐标由函数根据透视投影原理自动生成。ne 和far表示离视点的远近,它们总为正值(near/far 必须>0)。 2.gluPerspective()

投影大屏系统混合矩阵说明书

混合矩阵切换器说明书 第一章系统简介 MultiView Matrix 系列混合矩阵切换器,是一款高性能的专业PC信号切换设备,用于多个PC信号输入输出交叉切换,提供四种信号源的输入,信号源分别是是Video,VGA,DVI,YPbPr,每种信号单独传输,单独切换,输出可以是RGB和DVI,使信号传输衰减降至最低,图像信号能高保真输出。广泛应用在大屏幕显示工程、电视教学、指挥控制中心等场合。 Multiview Matrix系列混合矩阵切换器,主板采用自主研发出应于切换系统的巨量数据传输芯片技术,全新推出我公司独创的 180G/s处理高速宽带总线,彻底根除了处理数据总线带宽低下引起的显示速度慢且不稳定的瓶颈。 采用网络控制,可以传输数据量大。 可以支持RGB、DVI、HDTV、S-Video、NTSC/PAL格式信号输入,分辨率从640x480到1920x1200,刷新频率为60Hz;对每路输入信号采样都有特征记忆功能,在前级矩阵中可以任意切换输入信号,只要做过采样调整的信号再此输入,设备会自动配置记忆参数,无需二次采样调整。 可以支持RGB和 DVI信号同时输出,分辨率最高可达到1920x1200,刷新频率为60Hz,方便客户配置显示单元。 第二章技术参数 一计算机输入信号: 数量 4到72路DVI/RGB信号; 类型 DVI(数字)/ RGB(模拟); 分辨率 640x350,640x400,720x400,640x480,848x480,800x600, 848x480,1024x768,1152x864,1280x720,1280X768, 1280X960,1280x1024,1360x768,1400x1050,1440x900, 1600x1200,1680x1050,1792x1344,1856x1392, 1920x1080,1920x1200 像素, 刷新频率为60Hz;

全息投影定义、原理及分类介绍

全息投影定义、原理及分类介绍 在科技快速发展的今天,人们对视觉要求越来越高,由此能实现裸眼立体3D 显示的全息投影技术的应用也是越来越多,在给人们带来新鲜有趣的视觉体验的同时,也为众多商家提供新的宣传营销方式,打开市场新大门。 全息投影技术在展览展示方式,采用全息投影技术的全息成像柜可以使立体影像不借助任何屏幕或介质而直接悬浮在设备外的自由空间,任意角度看都是三维影像展现。产品种类多样分有全息展示柜、180度全息展示柜、270度全息展示柜、360度全息展示柜、全息金字塔、大中小型全息金字塔定制、全息投影设备、3D投影成像设备、全息玻璃柜等,可根据用户使用需求使用场地进行定制。未来全息投影技术市场发展潜力将是无可估量的。 一、什么是全息投影全息投影技术是近些年来流行的一种高科技技术,它是采用一种国外进口的全息膜配合投影再加以影像内容来展示产品的一种推广手段。它提供了神奇的全息影像,可以在玻璃上或亚克力材料上成像。这种全新的互动展示技术将装饰性和实用性融为一体,在没有图像时完全透明,给使用者以全新的互动感受,成为当今一种最时尚的产品展示和市场推广手段。全息投影设备包括:全息投影仪,全息投影幕,全息投影膜,全息投影内容制作等。航天科工数字展示事业部提供3D全息投影成像系统项目策划、3D全息投影成像展示内容制作、 二、全息技术的原理全息投影技术是利用干涉和衍射原理记录并再现物体真实的三维图像的记录和再现的技术。 其第一步是利用干涉原理记录物体光波信息,此即拍摄过程:被摄物体在激光辐照下形成漫射式的物光束;另一部分激光作为参考光束射到全息底片上,和物光束叠加产生干涉,把物体光波上各点的位相和振幅转换成在空间上变化的强度,从而利用干涉条纹间的反差和间隔将物体光波的全部信息记录下来。记录着干涉条纹的底片经过显影、定影等处理程序后,便成为一张全息图,或称全息照片;其第二步是利用衍射原理再现物体光波信息,这是成象过程:全息图犹如一个复杂的光栅,在相干激光照射下,一张线性记录的正弦型全息图的衍射光波一般可给出两个象,即原始象(又称初始象)和共轭象。再现的图像立

透视投影(perspectiveprojection)变换推导

透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。 透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。 没错,主流的3D APIs如OpenGL、D3D的确把具体的透视投影细节封装起来,比如 gluPerspective(…) 就可以根据输入生成一个透视投影矩阵。而且在大多数情况下不需要了解具体的内幕算法也可以完成任务。但是你不觉得,如果想要成为一个职业的图形程序员或游戏开发者,就应该真正降伏透视投影这个家伙么?我们先从必需的基础知识着手,一步一步深入下去(这些知识在很多地方可以单独找到,但我从来没有在同一个地方全部找到,但是你现在找到了)。 我们首先介绍两个必须掌握的知识。有了它们,我们才不至于在理解透视投影变换的过程中迷失方向(这里会使用到向量几何、矩阵的部分知识,如果你对此不是很熟悉,可以参考 可以找到一组坐标(v1,v2,v3),使得 v = v1 a + v2 b + v3 c (1) 而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得 p – o = p1 a + p2 b + p3 c (2) 从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量——p – o(有的书中把这样的向量叫做位置向量——起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p: p = o + p1 a + p2 b + p3 c (3) (1)(3)是坐标系下表达一个向量和点的不同表达方式。这里可以看出,虽然都是用代数分量的形式表达向量和点,但表达一个点比一个向量需要额外的信息。如果我写出一个代数分量表达(1, 4, 7),谁知道它是个向量还是个点! 我们现在把(1)(3)写成矩阵的形式:

openGL投影矩阵原理及数学推导

openGL投影矩阵 概述 显示器是2d的。3d场景需要转换为2d图像才能显示在屏幕上。投影矩阵(GL_PROJECTION)用于完成这个工作。投影矩阵将观察坐标(eye coordinates)转换成裁剪坐标(clip coordinates)。然后,裁剪坐标被除以w,转换为规范化的设备坐标(NDC)。 需要记住的一点是,裁剪操作和规范化都由投影矩阵(GL_PROJECTION)完成。下面介绍如何用6个参数(left,right,bottom,top,near,far)构建投影矩阵。 裁剪(clipping)操作是在裁剪坐标上进行的,安排在透视除法执行之前。裁剪坐标xc,yc,zc同wc比较,若每个分量都落在(-wc,wc)外,那么此坐标将被裁剪掉。 在透视投影中,3d场景中的点(观察坐标)从平截头体中映射到正方体(NDC)中;x坐标从[l,r]映射到[-1,1],y坐标从[b,t]映射到[-1,1],z坐标从[n,f]映射到[-1,1]。 注意到,观察坐标系是右手系,规范设备坐标系是左手系。这就有,在观察坐标系中,摄像机朝向沿着-z,而在NDC中,方向沿着z。由于glFrustum()只接受正参数,所以构造投影矩阵的时候要变号。 openGL中,3d场景中,观察坐标系下的点被投影到近投影面。下图展示了观察坐标系点(xe,ye,ze)投影到近投影面上的点(xp,yp,zp)。 从Top View of Projection看,xe投影到xp,根据等比性质:

从Side View of Projection看,yp计算类似: 注意到,xp和yp依赖于-ze,这一点要引起重视。在观察坐标被投影矩阵转换为裁剪坐标后,裁剪坐标仍然是同质坐标。在规范化阶段执行透视除法变为规范设备坐标(NDC)。 因此,可以将wc的值定为-ze。投影矩阵最后一行为(0,0,-1,0) 下一步,将xp,yp映射到xn,yn,此为线性映射[l,r]=>[-1,1],[b,t]=>[-1,1]:

向量的数量积——数量积的投影定义(含数量积综合练习题)

向量的数量积——数量积的投影定义 一、基础知识 1、向量的投影: (1)有向线段的值:设有一轴l ,AB 是轴上的有向线段,如果实数λ满足AB λ=,且当AB 与轴同向时,0λ>,当AB 与轴反向时,0λ<,则称λ为轴l 上有向线段 AB 的值。 (2)点在直线上的投影:若点A 在直线l 外,则过A 作'AA l ⊥于'A ,则称'A 为A 在直线l 上的投影;若点A 在直线l 上,则A 在A 在直线l 上的投影'A 与A 重合。所以说,投影往往伴随着垂直。 (3)向量的投影:已知向量,a b ,若a 的起点,A B 在b 所在轴l (与b 同向)上的投影分别为'',A B ,则向量''A B 在轴l 上的值称为a 在b 上的投影,向量''A B 称为a 在 b 上的投影向量。 2、向量的投影与向量夹角的关系:通过作图可以观察到,向量的夹角将决定投影的符号,记θ为向量,a b 的夹角 (1)θ为锐角:则投影(无论是a 在b 上的投影还是b 在a 上的投影)均为正 (2)θ为直角:则投影为零 (3)θ为钝角:则投影为负 3、投影的计算公式:以a 在b 上的投影λ为例,通过构造直角三角形可以发现 (1)当θ为锐角时,cos b λθ=,因为0λ>,所以cos b λθ=

(2)当θ为锐角时,()cos cos b b λπθθ=-=-,因为0λ<,所以cos b λθ-=-即cos b λθ= (3)当θ为直角时,0λ=,而cos 0θ=,所以也符合cos b λθ= 综上可得:a 在b 上的投影cos b λθ=,即被投影向量的模乘以两向量的夹角 4、数量积与投影的关系(数量积的几何定义): 向量,a b 数量积公式为cos a b a b θ?=,可变形为() cos a b a b θ?=?或 () cos a b b a θ?=?,进而与向量投影找到联系 (1)数量积的投影定义:向量,a b 的数量积等于其中一个向量的模长乘以另一个向量在该向量上的投影,即a b a b b λ→?=?(记a b λ→为a 在b 上的投影) (2)投影的计算公式:由数量积的投影定义出发可知投影也可利用数量积和模长进行求解: a b a b b λ→?= 即数量积除以被投影向量的模长 5、数量积投影定义的适用范围:作为数量积的几何定义,通常适用于处理几何图形中的向量问题 (1)图形中出现与所求数量积相关的垂直条件,尤其是垂足确定的情况下(此时便于确定投影),例如:直角三角形,菱形对角线,三角形的外心(外心到三边投影为三边中点) (2)从模长角度出发,在求数量积的范围中,如果所求数量积中的向量中有一个模长是定值,则可以考虑利用投影,从而将问题转化为寻找投影最大最小的问题 二、典型例题:

投影矩阵的定义

视锥就是场景中的一个三维空间,它的位置由视口的摄像机来决定。这个空间的形状决定了摄像机空间中的模型将被如何投影到屏幕上。透视投影是最常用的一种投影类型,使用这种投影,会使近处的对象看起来比远处的大一些。对于透视投影,视锥可以被初始化成金字塔形,将摄像机放在顶端。这个金字塔再经过前、后两个剪切面的分割,位于这两个面之间的部分就是视锥。只有位于视锥内的对象才可见。 视锥由凹视野( 在上图中,变量 投影矩阵是一个典型的缩放和透视矩阵。投影变换将视锥变换成一个直平行六面体的形状。因为视锥的近处比远处小,这样就会对靠近摄像机的对象起到放大的作用,也就将透视应用到了场景当中。 在视锥中,摄像机与空间原点间的距离被定义为变量 视矩阵将摄像机放置在场景的原点。又因为投影矩阵需要将摄像机放在 将两个矩阵相乘,得到下面的矩阵: 下图显示了透视变换如何将一个视锥变换成一个新的坐标空间。注意:锥形体变成了直平行六面体,原点从场景的右上角移到了中心。 在透视变换中,

这个矩阵基于一定的距离(这个距离是从摄像机到邻近的剪切面)对对象进行平移和旋转,但是它没有考虑到视野( 在这个矩阵中, 在程序中,使用视野角度来定义x和y缩放系数比使用视口的水平和垂直尺寸(在摄像机空间中)并不方便多少。下面两式使用了视口的尺寸,并且与上面的公式相等: 在这些公式中,Zn表示邻近的剪切面的位置,变量Vw和Vh表示视口的高和宽。这两个参数与 D3DVIEWPORT2结构中的dwWidth和dwHeight成员相关。 不管你使用那个公式,将同世界和视变换一样,可以调用下面的 D3DMATRIX ProjectionMatrix(const float near_plane,// distance to near clipping plane const float far_plane,// distance to far clipping plane const float fov_horiz,// horizontal field of view angle, in radians const float fov_vert)// vertical field of view angle, in radians { float h, w, Q; w = (float)cot(fov_horiz*0.5); h = (float)cot(fov_vert*0.5); Q = far_plane/(far_plane - near_plane); D3DMATRIX ret = ZeroMatrix(); ret(0, 0) = w; ret(1, 1) = h; ret(2, 2) = Q; ret(3, 2) = -Q*near_plane; ret(2, 3) = 1; return ret; } // end of ProjectionMatrix()

弹塑性矩阵推导

弹塑性矩阵推导

考虑材料的塑性,其增量形式的本构关系可表达为 p d σ=(D -D )d ε (1) 式(1)中,D 为弹性矩阵,p D 为塑性矩阵。 弹性矩阵D 的形式为 422000333242000333224000333000000 000000000K G K G K G K G K G K G K G K G K G G G G ??+--??????-+-???? =??--+?????? ?????? D (2) 体积模量3(12) E K μ= -,剪切模量2(1) E G μ=+。 在应变空间内,塑性矩阵可表达为 1()T f f A ??= ??p D D D σσ (3) 式中, ( )()T T p f f f f A B ????=--????D D σσσσ (4) f 为屈服函数;p σ为塑性应力,p p =σD ε; 1/2(()())T p T p T p f f f f B f f f ωθε??? ???? ??? '=???? ????????? σσ I σσσ (5) [111000]T '=I ;p ω为塑性功;p θ为塑性体应变;p ε为等效塑性应变; κ为反映加载历史的参数。 当p κω=时 当p κθ=时 当p κε=时

对于Drucker-Prager 模型,其屈服条件为 120f I J α== (6) 1x y z I σσσ=++,222222 21()2 x y z xy yz zx J S S S S S S = +++++,α为材料常数。 2 2f J α?''=?I σ (7) 222T x y z xy yz zx S S S S S S '??=??S (8) 22 ()32f K J J αα?'''==+?D D I I σ (9) 222 ( )()(3)92T T T f f A K K G J J ααα??'''===+??D I I σσ (10) 1()T f f A ??= ??p D D D σσ 222 22222 222222112123113211212311321121231131121121121(3)(3)999(9)(9)(9)(T T T T T T K K K G J J K G K G K G J K G J K G J m mn ml S m S m S m mn n nl S n S n S n ml nl l S l S l S l S m S n S l ααααααααβββββββββββββ''= + +''''=++++++=p D I I I I S SS 21121122231122132123123123 1122231231132232 113113113113212113223113)()()S S S S S S m S n S l S S S S S S m S n S l S S S S S ββββββββββββββββββββ?? ? ? ???? ? ? ?????? ?????????? 令4 3 p K G =+,23 q K G =- 弹塑性矩阵可表达为 211212311321121231132 1121231132112112112112112223112213123 123123 112223()(p m q mn q ml S m S m S m q mn p n q nl S n S n S n q ml q nl p l S l S l S l S m S n S l G S S S S S S m S n S l S S G βββββββββββββββββββββββ------------------=-=-----?-?----?-ep p D D D 21231132232 113113113113212 113223 113)()S S S S m S n S l S S S S G S ββββββββββ?? ?? ? ??? ? ? ???? -???----?-?-??? ?

透视投影详解

透视投影 透视投影是用中心投影法将形体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图。它具消失感、距离感、相同大小的形体呈现出有规律的变化等一系列的透视特性,能逼真地反映形体的空间形象。透视投影也称为透视图,简称透视。在建筑设计过程中,透视图常用来表达设计对象的外貌,帮助设计构思,研究和比较建筑物的空间造型和立面处理,是建筑设计中重要的辅助图样。 透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。它的视景体类似于一个顶部和底部都被切除掉的棱椎,也就是棱台。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。 在平行投影中,图形沿平行线变换到投影面上;对透视投影,图形沿收敛于某一点的直线变换到投影面上,此点称为投影中心,相当于观察点,也称为视点。平行投影和透视投影区别在于透视投影的投影中心到投影面之间的距离是有限的,而平行投影的投影中心到投影面之间的距离是无限的。当投影中心在无限远时,投影线互相平行,所以定义平行投影时,给出投影线的方向就可以了,而定义透视投影时,需要指定投影中心的具体位置平行投影保持物体的有关比例不变,这是三维绘图中产生比例图画的方法。物体的各个面的精确视图可以由平行投影得到。另一方面,透视投影不保持相关比例,但能够生成真实感视图。对同样大小的物体,离投影面较远的物体比离投影面较近物体的投影图象要小,产生近大远小的效果. 透视投影的原理和实现 by Goncely 摘要:透视投影是3D渲染的基本概念,也是3D程序设计的基础。掌握透视投影的原理对于深入理解其他3D渲染管线具有重要作用。本文详细介绍了透视投影的原理和算法实

投影矩阵的计算过程

投影矩阵的计算过程3d模型经过世界坐标变换、相机坐标变换后,下一步需要投影变换。投影变换的目的就是要把相机空间转换到标准视图空间,在这个空间的坐标都是正规化的,也就是坐标范围都在[-1,1]之间,之所以转换到这个空间是为了后续操作更方便。下面的讨论都是以列向量来表示,这样在变换操作时,采用的是矩阵左乘法,如果采用的是行向量的话,那就相反,矩阵右乘法即是向量在左边乘以变换矩阵。采用哪种表示并不影响结果,只需要把该种表示下得出的变换矩阵转置一下,就是采用另外一种表示模式需要的结果。常见的投影有两种,正交投影和透视投影,正交投影相对来说更简单,所以先来看看正交投影。最简单的正交变换矩阵 1 0 0 0 0 1 0 0 0 0 0 1 这个正交变换是不可逆变换,变换后x和y保留,z变成了0,在实际应用中,更常见的情况是限定x、y、z在一定的范围内的进行投影变换,比如x[l,r],y[b,t],z[n,f]。那么要把这段空间中的点变换到-1和1之间,只要完成两个变换,首先把坐标轴移到中心,然后进行缩放就可以了。采用列向量的话,那就是缩放矩阵乘以平移矩阵。2/(r-l) 0 0 0 1 0 0 -(r+l)/2 2/(r-l) 0 0 -(r+l)/(r-l) 0 2/(t-b) 0 0 x 0 1 0 -(b+t)/2 = 0 2/(t-b) 0 -(t+b)/(t-b) 0 0 2/(f-n) 0 0 0 1 -(n+f)/2 0 0 2/(f-n) -(f+n)/(f-n) 0 0 0 1 0 0 0 1 0 0 0 1 透视投影类比于我们人眼系统,看一个物体,会有远小近大的效果。在转换到相机空间后,相机是这个空间的原点,和正交投影体是一个长方体或者立方体不同,透视投影体是一个锥体被近平面截取掉头部剩下的空间。假定仍然采用上面的坐标表示。在透视投影下,空间上面的任何一点P投影到近平面上某点q,通过三角几何学我们可以得到qx=px*n/pz ,y点同理。假定直接投影到近平面,则该矩阵很简单,用Ma表示下面的矩阵1 0 0 0 0 1 0 0 0 0 1 0 0 0 1/n 0 则齐次空间某点(x,y,z ,1)被该矩阵转换后变成了(x ,y z, z/n) ,除以z/n,则变成了(nx/z,ny/z,n ,1) 正好吻合上面的公式。 undefined 但是我们知道投影变换需要把坐标变换到-1和1之间,假定先不考虑z轴的变换,在x轴和y轴上面经过上述变换后,已经投影在近平面了,假设近平面xy在[l,r] 和[b,t]之间了,因此只需要和上面的正交投影一样,进行平移和缩放操作就可以了,平移矩阵Mb为 1 0 0 -(l+r)/2 0 1 0 -(t+p)/2 0 0 1 -(f+n)/2 0 0 0 1 以及缩放矩阵Mc 2/(r-l) 0 0 0 0 2/(t-b) 0 0 0 0 2/(f-n) 0 0 0 0 1 McXMbXMa 得到的矩阵为2/(r-l) 0 -(r+l)/(n*(r-l))0 0 2/(t-b) -(t+b)/(n*(t-b)) 0 0 0 j k 0 0 1/n 0 j k 为未知数,这个矩阵也可以同时乘以n,则变为2n/(r-l) 0 -(r+l)/(r-l) 0 0 2n/(t-b) -(t+b)/(t-b) 0 0 0 j k 0 0 1 0 为了求解J k,我们需要把z变换到-1 和1 因此当z=n时为-1,z=f时为1 (j*n+k)/n= j+k/n=-1; 同理j+k/f=1; 得到k=2f*n/(n-f) j=-(n+f)/(n-f) 代入上面的矩阵,就得出通用的正交变换矩阵。而且在一般情况下r=-l ,b=-t 因此上述矩阵可以简化为n/r 0 0 0 0 n/t 0 0 0 0 -(n+f)/(n-f) 2f*n/(n-f) 0 0 1 0 n/r 和n/t可以进一步简化成水平半视角和垂直半视角的三角函数来表示,而水平视角和垂直视角和透视窗口的宽高比有是成正比的,最终上面两行可以用宽高

深度探讨透视投影坐标系.

3d图形程序,就一定会做坐标变换。而谈到坐标变换,就不得不提起投影变换,因为它是所有变换中最不容易弄懂的。但有趣的是,各种关于透视变换的文档却依然是简之又简,甚至还有前后矛盾的地方。看来如此这般光景,想要弄清楚它,非得自己动手不可了。所以在下面的文章里,作者尝试推导一遍这个难缠的透视变换,然后把它套用到DX和PS2lib 的实例中去。 1.一般概念 所谓透视投影变换,就是view 空间到project 空间的带透视性质的坐标变换步骤(这两个空间的定义可以参考其他文档和书籍)。我们首先来考虑它应该具有那些变换性质。很显然,它至少要保证我们在view空间中所有处于可视范围内的点通过变换之后,统统落在project空间的可视区域内。好极了,我们就从这里着手——先来看看两个空间的可视区域。 由于是透视变换,view空间中的可见范围既是常说的视平截体(view frustum)。如图, (图1)它就是由前后两个截面截成的这个棱台。 从view空间的x正半轴看过去是下图这个样子。

(图2)接下来是project空间的可视范围。这个空间应当是处于你所见到的屏幕上。实际上将屏幕表面视作project空间的xoy平面,再加一条垂直屏幕向里(或向外)的z轴(这取决于你的坐标系是左手系还是右手系),这样就构成了我们想要的坐标系。好了,现在我们可以用视口(view port)的大小来描述这个可视范围了。比如说全屏幕640*480的分辨率,原点在屏幕中心,那我们得到的可视区域为一个长方体,它如下图(a)所示。 (图3) 但是,这样会带来一些设备相关性而分散我们的注意力,所以不妨先向DirectX文档学学,将project空间的可视范围定义为x∈[-1,1], y∈[-1,1], z∈[0,1]的一个立方体(上图b)。这实际

投影法概念.点的投影

点、直线和平面>> 点>> 点在两投影面体系中的投影 1 点 1.1 点在两投影面体系中的投影 1.1.1 两投影面体系的建立 两投影面体系由互相垂直相交的两个投影面组成,如图1所示,其中一个为水平投影面(简称水平面),以H表示,另一个为正立投影面(简称正面),以V表示。两投影面的交线称为投影轴,以OX表示。 水平投影面H与正立投影面V将空间分为四个部分,称为四个分角,即第一分角、第二分角、第三分角、第四分角。 (1) 投影如图2所示,空间点A处于第一分角,按正投影法将点A向正面和水平面投射,即由点A向正面作垂线,得垂足a′,则a′称为空间点A的正面投影;由点A向水平面作垂线,得垂足a ,则a称为空间点A的水平投影。画出点A的正面投射线Aa′和水平投射线Aa所确定的平面Aaa′与V、H面的交线a′a x和aa x 。 图2 点在两投影面体系中的投影 (2) 注写规定空间点用大写字母表示,如A、B、C…;点的水平投影用相应的小写字母表示,如a、b、c…;点的正面投影用相应的小写字母加一撇表示,如a′、b′、c′…。 (3) 投影面展开为了把空间点A的两个投影表示在一个平面上,保持V面不动,将H 面的前半部分绕OX轴向下旋转90°、后半部分绕OX轴向上旋转90°与V面重合。则得到点A的两面投影图。 (4) 擦去边界,得到点的两面投影图投影面可以看作是没有边界的平面,故符号V、H及投影面的边界线都不需画出。 1.1.3 点在两投影面体系中的投影规律

(a) (b) 图3 点在两投影面体系中的投影规律 (1) 一点的水平投影和正面投影的连线垂直于OX轴。 在图3(a)中,点A的正面投射线Aa′和水平投射线Aa所确定的平面Aaa′垂直于V 和H平面。根据初等几何知识,若三个平面互相垂直,其交线必互相垂直,所以有aa x⊥a′a x、aa x⊥OX和a′a x⊥OX。当a随H面旋转重合于V面时,aa x⊥OX的关系不变。因此,在投影图上,aa′⊥OX。 (2) 一点的水平投影到OX轴的距离等于该点到V面的距离;其正面投影到OX轴的距离等于该点到H面的距离,即aa x=Aa′;a′a x=Aa。 在图3(a)中,因为Aaa x a′是矩形,所以aa x=Aa′; a′a x=Aa。 图4 分角内点的投影

ARCGIS中坐标系的定义及投影转换方法

ArcGIS中坐标系的定义及投影转换方法 张卫东 (安徽省环境信息中心 合肥 230001 ) 摘 要:本文就我省GIS项目中地理数据所涉及的多种坐标系及地图投影转换等问题作了详细分析,并在ESRI公司的ArcGIS软件平台上介绍了不同坐标系的定义及投影转换方法。 关键词:坐标系; 地图投影 一、问题的提出 GIS技术在我省环保工作中已应用多年,现有多套基于不同坐标系的地理数据,如全省1:5万的北京54坐标系数据,主要城市1:1万的西安80坐标系数据,GPS采集的WGS84坐标系数据以及同是北京54坐标系但不同投影的遥感解译数据等,这些不同坐标系的数据给我们的使用带来了困难:如何将遥感解译数据和不同的地理数据转换到一起,GPS采集的经纬度数据如何正确加载到地图上,以前在北京54坐标系上使用的数据又如何转换到新的西安80坐标系上来?通过摸索,本人找到了解决问题的一些方法,现介绍如下,首先介绍一下相关的几个概念。 二、相关概念 由于GIS所描述是位于地球表面的空间信息,所以在表示时必须嵌入到一个空间参照系中,这个参照系统就是坐标系,它是根据椭球体等参数建立的。另外,为了能够将地图从球面转换到平面,还要进行投影。 1. 椭球体(Spheroid)、基准面(Datum)、坐标系(Coordinate System)及投影(Projection) 尽管地球是一个不规则的椭球,但为了将数据信息以科学的方法存放到椭球上,我们需要用一个可以量化计算的椭球体作为地球的模型。这样的椭球体用长半轴a(semimajor axis),短半轴b(semiminor axis),偏心率倒数1/f(Inverse flattening)来描述,这三个参数数学关系为:1/f=a/(a-b),实际中我们一般用长、短半轴二个参数来表示就可以了,根据需要人们定义了多种参考椭球体模型。然而有了这个椭球体还不够,还需要一个大地基准面将这个椭球定位,它的作用是来确定地球与椭球体之间的位置关系,由于每个国家或地区需要最大限度的贴合自己的那一部分不同,基准面也不同。 有了基于椭球体参数的基准面,再加上角度单位(Angular Unit)和本初子午线(Prime Meridian),就定义了地理坐标系(Geographic Coordinate System),图2清楚地表明了这一点。 但地理坐标系是用经纬度表示球面的位置,很多时候我们精确分析需要在平面上来进行,这就要将地图从三维地理坐标通过投影转换成二维平面坐标,这样的坐标系叫投影坐标系(Projection Coordinate System),它是在地理坐标系上加上投影转换参数(参见图4)。 由于从球面到平面的转换会引起距离、面积、形状、方向一个或多个空间属性的变形失真,没有一种投影转换能保持所有的空间属性不变。所以一些地图投影通过损失其它空间属性来使某一属性失真最小,而另一些地图投影则努力平衡全部空间属性的失真,现有数百种地图投影,它们各自适合于表示整个地球表面或某些区域的不同需求,如我国1:50万和更大比例尺地形图使用的是高斯-克吕格 (Gauss-Kruger) 投影,它没有角度变形,在长度和面积上变形也很小,通过分带投影后能保证很高的精度(参见图4),而遥感解译数据常采用阿尔勃斯(Albers Equal-Area Conic)投影,它是等面积割圆锥投影,可以保持面积不变(参见图5)。

投影参数

投影参数 仅有地图投影并不足以定义投影坐标系。可以声明数据集处于横轴墨卡托投影中,但这些信息并不充足。投影中心在哪?是否使用了比例尺因子?如果不知道投影参数的精确值,就无法重新投影数据集。 还可以了解投影对数据造成的变形程度。如果对澳大利亚感兴趣,但知道数据集的投影中心是 0,0(即赤道与格林尼治本初子午线的交点),那么您可能想要更改投影的中心。 每种地图投影都有一组必须定义的参数。参数用于指定原点以及为感兴趣区域自定义投影。角度参数使用地理坐标系单位,而线性参数使用投影坐标系单位。 线性参数 东移假定值是应用到 x 坐标原点的线性值。北移假定值是应用 到 y 坐标原点的线性值。 通常使用东移假定值和北移假定值来确保所有 x 值和 y 值都 是正数。也可以使用东移假定值和北移假定值参数来缩小 x 坐标值 或 y 坐标值的范围。例如,如果知道所有 y 值均大于 5,000,000 米,则可使用 -5,000,000 的北移假定值。 在垂直近侧透视投影中,高度定义球体或旋转椭球体表面上方的透视点。 角度参数

?方位角定义投影的中心线。旋转角度用于测量北偏东方向的角度。它在洪特尼斜轴墨卡托投影、改良斜正形投影和局部投影中与方位角配合使用。 ?中央子午线定义 x 坐标的原点。 ?起始经度定义 x 坐标的原点。中央子午线与起始经度参数同义。 ?中央纬线定义 y 坐标的原点。 ?起始纬度定义 y 坐标的原点。此参数可能并不在投影中心。特别地,圆锥投影使用此参数设置感兴趣区域下 y 坐标的原点。在这 种情况下,不需要设置北移假定值参数来确保所有 y 坐标都是正数。 ?中心经度与洪特尼斜轴墨卡托投影中心(两点和方位角)配合使用来定义 x 坐标的起点。它通常与起始经度和中央子午线参数同义。 ?中心纬度与洪特尼斜轴墨卡托投影中心(两点和方位角)配合使用来定义 y 坐标的原点。它几乎总是投影的中心。 ?标准纬线 1 和标准纬线 2 与圆锥投影配合使用来定义比例为1.0 的纬线。使用一条标准纬线定义兰勃特等角圆锥投影时,第一条标准纬线定义 y 坐标的原点。 对于其他圆锥投影来说,y 坐标原点由起始纬度参数确定。 ?第一点的纬度 ?第二点的经度

投影矩阵的推导

投影矩阵的推导(OpenGL D3D) OpenGL矩阵推导——模型视图变化 在三维编程中,模型视图变换是从三维世界到二维屏幕中一个很重要的变换,但是这个变换往往很多人都不太理解,要么是事而非。而这方面的文章不是太少就是讲的太浅没有真正的理解模型视图变换,本人在这个过程中曾经走过很多歪路,不过好在最终在自己的不懈努力下终于降伏了这只猛虎。本人就以自己的理解,通过矩阵推导过程一步一步来了解模型视图变化,最后通过两个OpenGl的程序来进一步理解模型视图矩阵。先从一个基本的模 型视图—透视投影变换讲起。 透射投影是将相机空间中的点从视锥体(frustum)变换到规则观 察体(Canonical View Volume 以下简称CVV)中,待裁剪完毕后进行透视除法的行为。 透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷 惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任何地方感到陌生,立刻导致理解停止不前。 主流的3D APIs 都把透射投影的具体细节进行了封装,从而只 需一个函数便可生成一个透射投影矩阵比如gluPerspective(),使得我们不需要了解其算法便可实现三维到二维的转化,然而实

事是,一些三维图形或游戏开发人员遇到一些视图矩阵的问题往往会不知所措,比如视景体裁剪。 以下部分内容是从别处那转过来的,主要感谢Twinsen和一个叫丁欧南的高中生。 透视投影变换是在齐次坐标下进行的,而齐次坐标本身就是一个令人迷惑的概念,这里我们先把它理解清楚。齐次坐标 对于一个向量v以及基oabc, 可以找到一组坐标(v1,v2,v3),使得 v = v1 a + v2 b + v3 c (1) 而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得 p–o = p1 a + p2 b + p3 c (2) 从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量——p –o(有的书中把这样的向量叫做位置向量——起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p: p = o + p1 a + p2 b + p3 c (3)

投影矩阵的计算过程

投影矩阵的计算过程 3d模型经过世界坐标变换、相机坐标变换后,下一步需要投影变换。投影变换的目的就是要把相机空间转换到标准视图空间,在这个空间的坐标都是正规化的,也就是坐标范围都在[-1,1]之间,之所以转换到这个空间是为了后续操作更方便。 下面的讨论都是以列向量来表示,这样在变换操作时,采用的是矩阵左乘法,如果采用的是行向量的话,那就相反,矩阵右乘法即是向量在左边乘以变换矩阵。采用哪种表示并不影响结果,只需要把该种表示下得出的变换矩阵转置一下,就是采用另外一种表示模式需要的结果。 常见的投影有两种,正交投影和透视投影,正交投影相对来说更简单,所以先来看看正交投影。 最简单的正交变换矩阵 1 0 0 0 0 1 0 0 0 0 0 1 这个正交变换是不可逆变换,变换后x和y保留,z变成了0,在实际应用中,更常见的情况是限定x、y、z在一定的范围内的进行投影变换,比如x[l,r],y[b,t],z[n,f]。那么要把这段空间中的点变换到-1和1之间,只要完成两个变换,首先把坐标轴移到中心,然后进行缩放就可以了。采用列向量的话,那就是缩放矩阵乘以平移矩阵。 2/(r-l) 0 0 0 1 0 0 - (r+l)/2 2/(r-l) 0 0 -(r+l)/(r-l) 0 2/(t-b) 0 0 x 0 1 0 - (b+t)/2 = 0 2/(t-b) 0 -(t+b)/(t-b) 0 0 2/(f-n) 0 0 0 1 - (n+f)/2 0 0 2/(f-n) -(f+n)/(f-n) 0 0 0 1 0 0 0 1 0 0 0 1 透视投影类比于我们人眼系统,看一个物体,会有远小近大的效果。在转换到相机空间后,相机是这个空间的原点,和正交投影体是一个长方体或者立方体不同,透视投影体是一个锥体被近平面截取掉头部剩下的空间。假定仍然采用上面的坐标表示。在透视投影下,空间上面

相关文档
最新文档