经纬度(角度)转换为米(或统一的线性单位)

进行三维地图开发,之所以必须把经纬度(角度)转换为米(或统一的线性单位),核心原因是:三维渲染引擎和物理世界是欧氏几何空间,只能用X/Y/Z米来算位置、距离、光照和碰撞,无法直接用角度坐标。

简单说:GPU不认识经纬度,它只认识“距离原点多少米”。


具体原因分解

1. 渲染引擎要求线性坐标

无论是 Unity、Unreal、Cesium、Three.js 还是其他 WebGL 引擎,其底层都基于笛卡尔坐标系

  • 顶点着色器需要坐标是浮点数(float),单位通常是米。
  • 如果把经纬度(例如 121°、31°)直接当米塞进去,地球会被压成一个非常诡异的椭球,根本无法正确显示。

2. 经纬度的“尺度”在不同纬度不等长

正如你之前算到的:

经度1度 ≈ 111320米 × cos(纬度)

这意味着在北纬 60°,东西方向1度只有 55.66 公里,而在赤道是 111.32 公里。
如果不转换成米,直接在三维空间里画一个 “1度×1度” 的网格,它在赤道是正方形,在高纬度却变成了东西极度压扁的长方形——所有空间关系、距离计算、比例尺都会乱套。


posted @ 2026-05-11 15:12  twjy  阅读(39)  评论(0)    收藏  举报