当前位置:网站首页>数字孪生园区场景中的坐标知识
数字孪生园区场景中的坐标知识
2022-08-03 04:33:00 【ThingJS_小锘】
在开发数字孪生可视化项目时,经常会遇到各种坐标相关的问题可能会导致交付项目的效率降低。关于坐标,可能有这些问题:
① 什么是坐标系?低代码ThingJS用的是哪种坐标系?
② 在场景中需要什么信息才能确定某个对象的位置?
本期我们重点讲解一下园区场景中的坐标知识。
坐标(系)的基础概念、分类以及轴心点
基础概念及分类
从空间维度出发,坐标系大体可以分为两大类:平面坐标系、空间坐标系。坐标也会有相应的表达方式。

① 平面坐标系

② 空间(直角)坐标系
低代码ThingJS的坐标系是右手坐标系,即Y轴朝上, Z轴朝向屏幕外,如下图:

和空间直角坐标系不同的地方是三个轴的方向不一样。把右手放在原点的位置,使大拇指、食指和中指互成直角,把大拇指指向x轴的正方向,食指指向y轴的正方向时,中指所指的方向就是z轴的正方向。
对比看看 3DsMax 里的坐标系:

可以看出如果要把 Max 里的坐标 [x1,y1,z1] 转换到 ThingJS 中需要 y 与z 互换后再取反,如下图:

轴心点
园区里摆放的物体可能是规则的,也可能是不规则的。为了更好地对控制一个物体的位置并进行缩放 / 旋转,在表达一个物体的坐标时,我们会用这个物体的"轴心点"来代表这个物体的位置。简单说就是对象的轴心点就是对象自身坐标系的原点。
例如:这是园区中的一棵树,放缩时如果轴心点在地上,整棵树可以向上缩放。

如果轴心点在中心,就会不方便控制,根部会扎到地里。如下图:

再比如,一个雷达的轴心点应该旋转轴中心,以方便进行旋转的控制。如果轴心点在盖上,想一想就觉得很复杂....

坐标系的分类
基于"右手坐标系"都有哪些分类?在不同的使用场景下,选择合适的坐标系会让我们事半功倍。
1、世界坐标系
世界坐标系又称全局坐标系或绝对坐标系。当场景(注意不是指园区)创建后,在整个场景空间中标绘一个位置,此时场景空间的坐标系就是世界坐标系。
物体在世界坐标系下的坐标就是该物体的绝对坐标。
使用场景:物体是独立的,它的运动不受场景中其他物体的影响,只和整个场景有关系。

2、父物体坐标系
当在场景中创建了园区,在园区下放置一个飞机,飞机是园区的子物体,想在园区的坐标系下,设置飞机的位置,这时使用的园区的坐标系,就是飞机的父物体坐标系。

PS:当场景中只有一个园区时,以园区为参考建立的坐标系 = 世界坐标系,也就是说:飞机在世界坐标系的坐标和父物体下的坐标值是一致的。
使用场景:一个物体的运动受到另外一个物体的影响,这时就可以以“另外一个物体”为参考建立一个坐标系,作为该物体的父物体坐标系。
相对坐标
除了世界坐标系,其他所有的坐标系,其实都有"相对"的概念在里边。以任何物体为参考描述其他物体相对于该物体的空间位置即为相对坐标。
一个物体的绝对坐标只能有一个,相对坐标可以有无数个。

3、自身坐标系
有时候我们也希望在以自身作为坐标系统下控制。比如,飞机向前飞行20米,就是在自身坐标系下设置坐标[0,0,20](物体自身的z轴正向,可以理解为是物体正面的方向,比如我们面部的朝向)。

所以文章开头的问题在看到某个对象位置的坐标时比如 [5,18,10](假设坐标是 ThingJS 标准的右手坐标系下的坐标),还需要什么信息才能确定这个对象的位置呢?首先要知道,这个坐标是绝对坐标还是相对坐标。其次,如果是相对坐标,还要知道它是相对于谁的坐标。
弄清楚了以上信息,就能确定这个对象的位置。
边栏推荐
猜你喜欢

UV 裂解的生物素-PEG2-叠氮|CAS:1192802-98-4生物素接头

【软件工程之美 - 专栏笔记】35 | 版本发布:软件上线只是新的开始

Live | StarRocks technology insider: low base dictionary global optimization

常见荧光染料修饰多种基团及其激发和发射波长数据一览数据

c语言结构体中的冒泡排序

社交电商:链动2+1模式,为什么能在电商行业生存那么久?

深圳线下报名|StarRocks on AWS:如何对实时数仓进行极速统一分析

社交电商:流量红利已尽,裂变营销是最低成本的获客之道

Interface test practice | Detailed explanation of the difference between GET / POST requests

中断系统需要解决的问题
随机推荐
接口管理工具YApi怎么用?颜值高、易管理、超好用
【生物素叠氮化物|cas:908007-17-0】价格_厂家
mysql bool blind
【uni-APP搭建项目】
在线密码生成工具推荐
接口测试框架实战(四)| 搞定 Schema 断言
MySQL 删除表数据,重置自增 id 为 0 的两个方式
超好用的画图工具推荐
安装ambari
Kotlin-Flow常用封装类:StateFlow的使用
9.新闻分类:多分类问题
多肽介导PEG磷脂——靶向功能材料之DSPE-PEG-RGD/TAT/NGR/APRPG
私域流量引流方法?分享购火爆的商业模式,你值得拥有
MySQL 出现 The table is full 的解决方法
WinForm的控件二次开发
DFS's complement to pruning
path development介绍
2022河南萌新联赛第(四)场:郑州轻工业大学 G - 迷宫
自考六级雅思托福备战之路
【Harmony OS】【ARK UI】ets使用startAbility或startAbilityForResult方式调起Ability