cesium wgs84 经纬度转笛卡尔坐标

        在cesium中默认使用的是wgs84椭球,关于如何将wgs84经纬度坐标转换成笛卡尔坐标,cesium代码如下:

        

// 将经纬度转换成笛卡尔坐标
Ellipsoid.prototype.cartographicToCartesian = function (cartographic, result) {
  //`cartographic is required` is thrown from geodeticSurfaceNormalCartographic.
  var n = cartographicToCartesianNormal;
  var k = cartographicToCartesianK;

  // 计算给定点在地球表面的法线
  this.geodeticSurfaceNormalCartographic(cartographic, n);
  // 计算球面坐标
  Cartesian3.multiplyComponents(this._radiiSquared, n, k);
  var gamma = Math.sqrt(Cartesian3.dot(n, k));
  Cartesian3.divideByScalar(k, gamma, k);
  // 计算高程向量
  Cartesian3.multiplyByScalar(n, cartographic.height, n);

  if (!defined(result)) {
    result = new Cartesian3();
  }
  // 返回笛卡尔坐标
  return Cartesian3.add(k, n, result);
};

其中计算过程如下

       函数 this.geodeticSurfaceNormalCartographic(cartographic, n);的计算公式为:

        n = vec3(cos(θ)*cos(β),cos(θ)*sin(β),sin(θ));

       函数Cartesian3.multiplyComponents(this._radiiSquared, n, k);的计算公式为:

       k = vec3((a^2*cos(θ)*cos(β),b^2*cos(θ)*sin(β),c^2*sin(θ));

        常规的球面参数方程为:x = a*cos(θ)*cos(β),y = b*cos(θ)*sin(β) ,z = c*sin(θ).之所以使用平方的形式是因为后面还要点乘vec3(a,b,c)向量,这里提前做了后面就不在相乘了。

        函数var gamma = Math.sqrt(Cartesian3.dot(n, k));的计算公式为:

        gamma = [[(a*cos(θ)*cos(β)]^2,[b*cos(θ)*sin(β)]^2,[c*sin(θ)]^2]^(1/2);

        是为了向量的归一化时做被除数;

       函数 Cartesian3.divideByScalar(k, gamma, k);的公式为:

       k = k / gamma;表示的意义为椭球向量的归一化后再乘以(a,b,c);

       k = vec3(a,b,c) 点乘 [vec3(a*cos(θ)*cos(β),b*cos(θ)*sin(β),c*sin(θ)) / ([a*cos(θ)*cos(β)]^2 + [b*cos(θ)*sin(β)]^2 + [c*sin(θ)]^2)^(1/2)];

      函数Cartesian3.multiplyByScalar(n, cartographic.height, n);的公式为

       n = vec3(cos(θ)*cos(β),cos(θ)*sin(β),sin(θ)) * height; 意义为地球表面的高程方向向量。

      函数Cartesian3.add(k, n, result);的结果为:

        点再地球表面的向量加上点再地球表面的高程向量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值