3dtiles icon indicating copy to clipboard operation
3dtiles copied to clipboard

请问40680631590769和40408299984661.4数值的来源?

Open Hisos opened this issue 2 years ago • 2 comments

这两个数值来自以下函数: std::vector transfrom_xyz(double radian_x, double radian_y, double height_min){ // 定义椭球体参数 double ellipsod_a = 40680631590769; double ellipsod_b = 40680631590769; double ellipsod_c = 40408299984661.4;

const double pi = std::acos(-1);
// 计算坐标转换中的各个分量
double xn = std::cos(radian_x) * std::cos(radian_y);
double yn = std::sin(radian_x) * std::cos(radian_y);
double zn = std::sin(radian_y);

double x0 = ellipsod_a * xn;
double y0 = ellipsod_b * yn;
double z0 = ellipsod_c * zn;
double gamma = std::sqrt(xn*x0 + yn*y0 + zn*z0);    // 几何意义为物体在地面上的投影点到地心距离的开方
double px = x0 / gamma;
double py = y0 / gamma;
double pz = z0 / gamma;
....

}

Hisos avatar Aug 18 '23 13:08 Hisos

从cesium里抄过来的

fanvanzh avatar Aug 30 '23 02:08 fanvanzh

这段代码计算的(x0, y0, z0)逻辑上是ECEF坐标系下的坐标, 但参与计算的ellipsod_a,ellipsod_b和ellipsod_c并不是地球椭球模型的长半轴,长半轴和短半轴,而近似长半轴的平方,长半轴的平方和短半轴的平方。如40680631590769和地球半径(6,378,137 )的平方40,678,361,153,989是同一个数据级,数值上看起来接近。

疑问: ellipsod_a不应该是地球的长半轴吗?为什么取值更像地球长半轴的平方呢?

Hisos avatar Nov 14 '23 08:11 Hisos