当前位置: 首页 > news >正文

坐标系概述

坐标系原点X方向Y方向Z方向
WCS (World Coordinate System)地心赤道本初子午线方向赤道东90°方向北极方向
ECI (Earth-Centered Inertial)地心春分点方向与X、Z正交的方向北极星方向(惯性北极)
NED (North-East-Down)当前载体位置北方向东方向地心(向下)
ENU (East-North-Up)本地测站东方向北方向天顶方向(向上)
ECS (Entity Coordinate System)飞行器鼻尖位置航向方向(前向)右侧方向地心方向(向下)
PCS (Platform Coordinate System)载体平台中心前向右向下向
RSCS (Radar Sensor Coordinate System)雷达天线相位中心雷达波束方向(前向)右侧方向下向
LLA (Latitude, Longitude, Altitude)地球椭球面纬度(北为正)经度(东为正)高度(海平面起算)

为什么经纬度LLA不能简单做线性差值?

(1)经纬度LLA是球面坐标系,单位:°

(2)经度在不同纬度下的“物理距离”是 不一样的:赤道附近,经度1度 ≈ 111km。但靠近两极,经度1度 ≈ 0 km。

(3)纬度变化是按球面曲率来的,线性插值会导致路径“弯掉”。

为什么ECS可以线性插值?

(1)ECS是直角坐标系,实体坐标系,局部平面坐标系,单位是米。

(2)用 ECS 做插值,相当于在平面上“画直线”,再映射回地球表面

LLA->ECS

ut::coords::ECS RouteGenerator::Widget::llaToEcs(const ut::coords::LLA& lla, const ut::coords::LLA& centerlla, const ut::coords::LLA& dstlla)
{UtEntity entity;// 设定 ECS 原点entity.SetLocationLLA(centerlla.mLat, centerlla.mLon, centerlla.mAlt);UtEntity dstEntity;// 设定目标实体dstEntity,确定ECS的朝向dstEntity.SetLocationLLA(dstlla.mLat, dstlla.mLon, dstlla.mAlt);ut::coords::NED relNed = entity.GetRelativeLocationNED(&dstEntity);double azimuth = 0, pitch = 0;UtEntity::ComputeAzimuthAndElevation(relNed.GetData(), azimuth, pitch);entity.SetOrientationNED(azimuth, pitch, 0);UtEntity cvrEntity;cvrEntity.SetLocationLLA(lla.mLat, lla.mLon, lla.mAlt);ut::coords::ECS ecs = entity.GetRelativeLocationECS(&cvrEntity);return ecs;
}

ECS->LLA

ut::coords::LLA RouteGenerator::Widget::EcsTolla(const ut::coords::ECS& ecs, const ut::coords::LLA& centerlla, const ut::coords::LLA& dstlla)
{UtEntity entity;// 设定 ECS 原点entity.SetLocationLLA(centerlla.mLat, centerlla.mLon, centerlla.mAlt);UtEntity dstEntity;// 设定目标实体dstEntity,确定朝向dstEntity.SetLocationLLA(dstlla.mLat, dstlla.mLon, dstlla.mAlt);// 计算的是目标点dstEntity相对于原点entity的相对位置,结果用NED表示。ut::coords::NED relNed = entity.GetRelativeLocationNED(&dstEntity);double azimuth = 0, pitch = 0;UtEntity::ComputeAzimuthAndElevation(relNed.GetData(), azimuth, pitch);entity.SetOrientationNED(azimuth, pitch, 0);ut::coords::WCS cvrWcs = entity.ConvertECSToWCS(ecs);UtEntity cvrEntity;cvrEntity.SetLocationWCS(cvrWcs);ut::coords::LLA lla = cvrEntity.GetLocationLLA();return lla;
}

相关文章:

  • 湖北理元理律师事务所:企业债务危机的“止血”与“造血”平衡术
  • spark的处理过程-转换算子和行动算子
  • 视频编码原理讲解一:VCL层和NAL层的讲解
  • 在文档里如何引用在线SVG甘特图
  • 17.three官方示例+编辑器+AI快速学习webgl_buffergeometry_lines
  • NVIDIA Quantum-2 QM9700系列利用400G infinniband扩展数据中心智能交换机 NVIDIA Quantum-2 InfiniBand 交换机系列
  • 服务器带宽基础知识
  • 量子加密通信:守护信息安全的未来之盾
  • 从逻辑学视角探索数学在数据科学中的系统应用:一个整合框架
  • 2024年北理工Python123第六章编程题整理
  • Linux `kill` 指令深度解析与高级应用指南
  • C38-全局变量、局部变量及外部变量
  • 吴恩达机器学习笔记:单变量线性回归
  • 机器学习驱动的智能化电池管理技术与应用
  • 《Python星球日记》 第59天:生成对抗网络(GAN)
  • 《算法导论(第4版)》阅读笔记:p32-p38
  • USB学习【10】描述符-HID描述符
  • 42、在.NET 中能够将⾮静态的⽅法覆写成静态⽅法吗?
  • Java 内存模型(JMM)与内存屏障:原理、实践与性能权衡
  • RabbitMQ高并发秒杀、抢购系统、预约系统底层实现逻辑
  • 线下哪些商家支持无理由退货?查询方法公布
  • 中美发布日内瓦经贸会谈联合声明达成关税共识,外交部回应
  • 技术派|巴基斯坦导弹:让印度保持克制的“定海神针”?
  • 高龄老人骨折后,生死可能就在家属一念之间
  • 智利观众也喜欢上海的《好东西》
  • 保证断电、碰撞等事故中车门系统能够开启!汽车车门把手将迎来强制性国家标准