在cesium的开发中,有时会碰到局部的空间坐标计算,特别是在涉及到三维模型加载的场景中,例如,已知一个点的经纬度坐标,计算附近与它相距x、y、z距离的一个新坐标位置,同样需要换算成经纬度坐标,有时还需要考虑水平旋转和上下倾角。
计算方法
cesium的Transforms里提供了根据当前点,建立一个局部坐标系的方法,通过矩阵进行坐标的转换,局部坐标系的建立方式:
//_ca_coord为Cartesian3坐标,可以通过Cesium.Cartesian3.fromDegrees,由经纬度坐标进行转换;
//eastNorthUp代表东、北、上,对应x\y\z
const _localToWorld_Matrix =
Cesium.Transforms.eastNorthUpToFixedFrame(_ca_coord);
以上点作为局部坐标系的原点,距离它x、y、z的新坐标计算方式为:
//通过矩阵乘法进行实现,结果为Cartesian3坐标,同样可以转换为经纬度