三维坐标系介绍与转换

转载 2015年11月19日 20:21:16

转载自:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/OnlineHelp/Flash3D/G_ProjectDocumentation/B_coordinate_system.html

三维坐标系介绍


基本概念

        我们需要三个轴来表示三维坐标系,前两个称作x轴和y轴,这类似于2D平面,第三个轴称作z轴。一般情况下,3个轴互相垂直。也就是每个轴都垂直于其他两个轴。图1展示了一个3D坐标系。

3D笛卡尔坐标系

图1 3D笛卡尔坐标系

        在Flash3D产品中我们实际上是位于z轴负方向面向xy平面来进行操作。当我们面对计算机屏幕并且坐标系没有旋转的情况下,实际看到的应该是图2的情况,这时候z轴垂直屏幕向里。

        在这里的三维空间中,z 属性表示深度。当对象向右移动时,x 属性的值会增大。当对象向上移动时,y 属性的值会增大。当对象远离视点时,z 属性的值会增大。若使用透视投影和缩放,则对象在靠近屏幕时会显得大一些,而在远离屏幕时会显得小一些。

面对计算机实际看到xy平面

图2 面对计算机实际看到xy平面

        2D平面中我们指定x轴向右为正,y轴向上为正的坐标系为标准形式,但是3D中并没有标准形式。不同的作者、不同的研究领域使用不同的标准。但这里我们统一使用图1所示坐标系。

         把3D中的x轴、y轴等同于2D中的x轴、y轴是不准确的。3D中,任意一对轴都定义了一个平面并垂直于第3个轴(例如,包含x,y轴的xy平面,垂直于z轴。同样,xz平面垂直于y轴,yz平面垂直于x轴)。我们指定+x,+y和+z分别指向右方,上方和前方。

        在3D中定位一个点需要三个值:x,y和z,分别代表该点到yz,xz和xy平面的有符号距离1。例如x值是到yz平面的有符号距离,此定义是直接从2D中扩展来的。如图3所示:

3D中定位点

图3 3D中定位点


左手坐标系与右手坐标系

        3D坐标系存在两种完全不同的坐标系:左手坐标系和右手坐标系。如果同属于左手坐标系或右手坐标系,则可以通过旋转来重合,否则不可以。

         “左手”和“右手”分别代表什么意思呢?我们先学习一下怎样判断坐标系的类型。伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上。中指指向前方。现在,我们就已经建立了一个左手坐标系,拇指、食指和其余手指分别代表x、y、z轴的正方向。如图4所示:

左手坐标系

图4 左手坐标系

        同样,伸出右手,使食指向上,中指向前,拇指这时指向左,这就是一个右手坐标系,拇指、食指和其余三个手指分别代表x、y、z轴的正方向。右手坐标系如图5所示:

右手坐标系

图5 右手坐标系

        无论你怎么转动手腕,也不可能让两只手代表的坐标系重合。

        在我们的Flash3D产品中使用的是左手坐标系。

         左手坐标系与右手坐标系对于“正向旋转”的定义也是不一样的,假设空间有一条直线,我们需要绕该直线旋转一定的角度,首先我们叫这个轴为“旋转轴”,不要想当然的认为这里的“轴”是基准轴(x,y或z轴),旋转轴可以取任意方向。这时候如果希望绕轴旋转30度,我们怎么知道该如何旋转呢?

         我们首先要知道哪个方向为正,哪个方向为负,这样才能进行下一步操作。标准区分左手坐标系中的正向与负向的方式叫做“左手法则”。如何操作呢?首先明确一个前提,虽然旋转轴理论上是无限长的,但是我们还是认为它和基准轴一样有一个正方向和一个负方向;左手法则的使用方式:左手握住旋转轴,竖起拇指指向旋转轴正方向,正向旋转方向就是其余手指卷曲的方向;相同的操作方式在右手坐标系就是“右手法则”;如下图6,7:

左手法则

图6 左手法则

右手法则

图7 右手法则

        可以发现,在左手坐标系统中,从旋转轴正方向看下去,正向旋转方向就是顺时针方向;而在右手坐标系统中,从旋转轴正方向看下去,正向旋转方向就是逆时针方向;

        左手坐标系与右手坐标系可以互转,最简单的方式就是将某一个基准轴的正方向和负方向调转;如果掉转了两个轴,相当于绕第三个轴旋转了180度,并没有坐标系的变化。

世界坐标系与物体坐标系

世界坐标系

        3D世界坐标与flash里的坐标不一样, flash坐标只有两根轴(x轴与y轴)以flash影片左上角为坐标原点,向右为X轴正方向,向下为Y轴正方向。3D的世界坐标有三轴(x,y,z),如图8:

视口与世界坐标

图8 视口与世界坐标

        世界坐标的Z轴垂直于视口平面。

物体坐标系

        每个3D元素都有自身坐标,在默认情况下,新创建一个3D元素时,该元素的自身坐标与世界坐标重合。下图新建一球(3D基本元素),该球自身坐标与世界坐标重合。

自身坐标

图9 自身坐标

        当3D元素被移动或转动时,其自身坐标也跟着移动和转动。

自身坐标相对世界坐标旋转

图10 自身坐标相对世界坐标旋转(rotationZ=30)

        将图9里的球的绕z轴旋转30度时就的到图2。图中黑线描出世界坐标。


SuperMap iClient For Flash3D产品中的一些概念

屏幕坐标,世界坐标,地图坐标

         屏幕坐标比较容易理解,就是我们看到的电脑屏幕对应的坐标点,这里的坐标点为二维坐标点,以左上角为原点,水平向右是正向x轴,垂直向下是正向y轴。当我们的鼠标在屏幕上移动或者点击的时候,首先获得的是屏幕坐标,进而通过转换能够得到世界坐标和地图坐标,屏幕坐标如下图11。

屏幕坐标

图11 屏幕坐标

         世界坐标系直接影响到我们观察到的Flash3D内部对象的效果,例如近大远小的透视效果, 所以世界坐标系是一个三维坐标系,我们这里使用的是笛卡尔坐标系,如图1所示,初始 状态,原点位于屏幕正中心,xy平面与计算机屏幕重合,向右向下为正,z轴垂直于电脑 屏幕向里为正。

        地图坐标系是我们看到 的地图平面的坐标系,是一个二维坐标系,它以左下角为原点,向右为x轴正方向,向上 为y轴正方向,如图12所示。这里的二维地图平面放在世界坐标系中,所以它有翻转等效 果。

地图坐标系

图12 地图坐标系

三种坐标系之间转换关系

         当我们已知屏幕坐标,需要知道对应的世界坐标的时候,就会用到屏幕坐标向世界坐标的转换(map:screenToVector3D()方法);同理,当已知三维对象的世界坐标需要知道屏幕坐标的时候,就需要世界坐标向屏幕坐标的转换(map:vector3DToScreen()方法)。应用场景比如:鼠标单击屏幕上某一点能够拾取世界坐标系中该点所在的地物等。

        当我们已知世界坐标上的一个坐标位置,需要知道它在地图上的位置的时候,则需要进行世界坐标到地图坐标的转换(map: vector3DToMap()方法);同理,当知道地图上坐标点,需要知道它在世界坐标系中的位置时,就需要将地图坐标转换成世界坐标(map: mapToVector3D()方法)。应用场景比如:三维世界有一个建筑,需要放在二维地图上,位置间的转化就显得非常必要了。

        当需要鼠标在屏幕移动并获取其对应的地图坐标点位置的时候,就需要屏幕坐标向地图坐标的转换(map: mapToScreen()方法),当已知地图上某点地理坐标,需要知道对应的屏幕坐标的时候,就需要将地图坐标转换成屏幕坐标(map: screenToMap()方法)。应用场景比如:鼠标的框选能够选取地图坐标中对应位置的地物要素(这里就类似二维地图的一些操作),就会用到地图坐标与屏幕坐标的转换。

        总之,坐标之间的转换在具体的应用场景中是非常重要的,尤其影响各个地物之间在不同坐标系之间的展现形式。

相关文章推荐

世界坐标系和相机坐标系,图像坐标系的关系

二、图像坐标:我想和世界坐标谈谈(B)          玉米将在这篇博文中,对图像坐标与世界坐标的这场对话中涉及的第二个问题:谈话方式,进行总结。世界坐标是怎样变换进摄像机,投影成图像坐标的呢? ...
  • waeceo
  • waeceo
  • 2016-01-25 15:35
  • 25544

三维坐标转换

为了方便自己记忆,记录一下三维坐标旋转矩阵的推导过程。     坐标的旋转变换在很多地方都会用到,比如机器视觉中的摄像机标定、图像处理中的图像旋转、游戏编程等。     任何维的旋转可以表述...

图形学的坐标转换问题(局部到世界坐标系,世界到观察坐标系)

3D图形学的坐标系转换偶感觉比较琐碎的问题。看了后几个月又忘记了。决定又重新看遍,记录下来以增加记忆。但偶太懒了,加上某些描述《Introduction to d3d9c》这本书原著描述的很好了,偶...

三维坐标旋转矩阵

1.三维坐标旋转矩阵的推导过程任何维的旋转可以表述为向量与合适尺寸的方阵的乘积。最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述。 坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同...

在博客中插入latex公式

P(x|c)=\frac{P(c|x)\cdot P(x)}{P(x)} P(x|c)=\frac{P(c|x)\cdot P(x)}{P(x)}

三维坐标系变换

已知原有的坐标系XYZ,和新的坐标系X' Y'Z',如何将就坐标系进行变换,和新坐标系重合。 像这类数学问题,一般转换为矩阵问题,就很容易理解和编程实现。 已知,就的坐标系方向向量为 i ...

三维坐标系的旋转矩阵

前言:非常感谢http://m.blog.csdn.net/blog/qiuqchen/21980731的总结和分享  ,让我再一次详细的学习了三维坐标中的选择矩阵推导过程。 为了方...

两个坐标系之间变换矩阵的实现

主要分析从局部坐标系变换到全局坐标系下的坐标转换公式。首先对全局坐标系进行描述,如图1,o-xyz即全局坐标系,O’-X’Y’Z’即在o-xyz坐标系中定义的局部坐标系,两个坐标系之间的关系如下:这个...

计算机图形学01——坐标系

在构造和显示一个场景的过程中会使用几个不同的笛卡儿参照系。 首先在各自的坐标系统中构造每一个对象的形状 比如 一个人 这个称作局部坐标 一旦生成单个物体的形状 我们就要将对象放入到世界的坐...

正交投影变换与透视投影

相机投影模型 三维计算机图形学的基本问题之一就是三维观察问题:即如何把三维场景投影到要显示的二维图像。大多数经典的解决投影变换方法有两种:正交投影变换和透视投影变化。       正交投影变换...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)