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

三维坐标系介绍


基本概念

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

图1 3D笛卡尔坐标系

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

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

图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所示:

图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()方法)。应用场景比如:鼠标的框选能够选取地图坐标中对应位置的地物要素(这里就类似二维地图的一些操作),就会用到地图坐标与屏幕坐标的转换。

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

三维坐标系介绍与转换相关推荐

  1. 三维坐标系之间的转换关系详解与推导

    文章目录 前言 三维坐标系之间的转换关系:R(旋转矩阵) .T(平移矩阵) 数学模型描述 布尔莎模型:前提是旋转角为微小旋转角 罗德里格矩阵模型 尺度相同: 存在的一些问题: 主要参考来源: 前言 三 ...

  2. Apollo进阶课程⑭ | Apollo自动定位技术——三维几何变换和坐标系介绍

    目录 1.三维几何变换---旋转 2.三维几何变换----平移 2.1刚体的位置和朝向 3. 坐标系 3.1 ECI地心惯性坐标系 3.2 ECFF地心地固坐标系 3.3当地水平坐标系 3.4 UTM ...

  3. 三维视觉基础之世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系

    三维视觉基础之世界坐标系.相机坐标系.图像坐标系和像素坐标系之间的转换关系 一.各坐标系介绍 二.世界坐标系和相机坐标系之间的转换 三.相机坐标系和图像坐标系之间的转换 四.图像坐标系和像素坐标系之间 ...

  4. Unity学习笔记 球形全景图平面像素坐标与三维坐标系上的坐标之间的转换

    前言 本文将讲解如何通过球形全景图上的二维坐标通过换算得到三维坐标系上的三维坐标.具体场景就是,已知道一张全景图上某个点的像素位置(px,py),最终可以算出该点对应在球体上的三维坐标(X,Y,Z). ...

  5. 空间坐标系以及空间两三维坐标系转换矩阵解释

    空间坐标系以及空间两三维坐标系转换矩阵解释 因为工作的原因,需要进行不同坐标系的一个转换,在查阅了众多的网页之后,发现有用的没几个,而且众多都是抄的同一篇文章,而且都是罗列以下旋转的方式,几乎没有解释 ...

  6. 手眼标定详述(坐标系介绍,二维、三维的手眼标定方法@九点法、AX=XB)

    手眼标定 1. 写在前面 2. 手眼标定基本分类 2.1 手眼标定坐标系 2.2 眼在手外(EYE TO HEAD) 2.3 眼在手上(EYE IN HEAD) 3. 九点法(二维)- 算法实现流程 ...

  7. 3D转换之三维坐标系,透视旋转等基础知识

    一.三维坐标系 三维坐标系就是指立体空间,立体空间是由3个轴共同组成的. 1.x轴:水平向右    注意:x右边是正值,左边是负值 2.y轴:垂直向下    注意:y下面是正值,上面是负值 3.z轴: ...

  8. 国内地图坐标系介绍及常见地图(百度、高德、凯立德)之间的坐标系转换

    一.国内地图坐标系简介 1.  WGS84(地图坐标) 美国GPS使用的是WGS84的坐标系统.GPS系统获得的坐标系统,基本为标准的国际通用的WGS84坐标系统 2.  GCJ-02(火星坐标) G ...

  9. Cocos2d-x坐标系介绍

    Cocos2d-x坐标系介绍 在图形图像和游戏应用开发中坐标系是非常重要的,我们在Android和iOS等平台应用开发的时候使用的二维坐标系它的原点是在左上角的.而在Cocos2d-x坐标系中它原点是 ...

最新文章

  1. 浅析商城网站建设需要注意哪些细节内容呢?
  2. 原平 计算机培训,原平编程培训,原平编程培训班,原平编程培训完找什么工作 - IT教育频道...
  3. gin redis 链接不上_内存优化,Redis是如何实现的!
  4. 探秘react,一文弄懂react的基本使用和高级特性
  5. regionserver.HRegionServer: Failed construction RegionServer
  6. python元组及文件
  7. mvc+EF实现简单的登陆功能
  8. X86栈切换,任务切换
  9. docker容器无法使用top命令
  10. 用python解决放苹果问题_放苹果
  11. 世界时、国际原子时、协调世界时到底有什么联系(最简单易懂版)
  12. 天平游码读数例题_使用天平游码时的读数方法-word
  13. 侍魂胧月传说服务器维护,《侍魂胧月传说》2018年12月12日2:00进行全服停机更新维护...
  14. install quantopian时出现No module named pip.req的解决办法
  15. 怎么在Linux下执行sql文件
  16. Fans没信心,回家继续修行
  17. Beyond Compare 4秘钥
  18. 打开虚拟机报错,解决:Entering emergency mode. Exit the shell to continu
  19. win10 更新后无法访问共享文件夹
  20. 定义一个方法实现奥特曼攻击小怪兽,定义一个方法实现小怪兽攻击奥特曼

热门文章

  1. mybatis按姓名或手机号搜索
  2. Canvas特效动画
  3. Delphi的编程语言Object Pascal(3)
  4. Web前端开发工程师必备技术列表
  5. 中国开源人访谈系列之:清风博主
  6. /backend_agg.py:238: RuntimeWarning: Glyph 26085 missing from current font.
  7. 计算机系笔记本电脑配置,笔记本电脑硬件配置全解析, 看完让你轻松选择笔记本...
  8. python 打印机控制_python调用打印机
  9. 【Java语言】请输入任意一个三位数,输出个位 , 十位 , 和百位,输入:123,输出:3,2,1
  10. 如何查看公众帐号粉丝的微信号