问题
对于铯如何计算大地测量和地心表面法线,我有点困惑。由计算出的法线生成的平面在给定的点上实际上并不与椭球面相切,而大地曲面法线产生的平面与地心面法线产生的平面是完全相同的。
示例&为什么我需要这个
在这个沙堡中,当你点击地球表面时,会绘制出与椭球切线的XYZ轴。
我需要的是在给定的点上得到一个与椭球切线的XY平面,然后将其他点投影到这个平面上。问题是,正如我所看到的,平面与椭球面一点也不相切。
顺便说一句--当我使用内置方法: Cesium.EllipsoidTangentPlane();我也得到了奇怪的结果--平面仍然不与椭球切线,而且还漂浮在空间的某个地方。这是沙堡。
感谢你的帮助,因为我不明白这里发生了什么。
发布于 2021-07-02 02:14:23
平面的法线定义在平面的局部坐标系上,其中x、y和z轴分别表示地球(世界或ECEF )的东、北、上方向。所以,如果一个平面的法线向量是在ECEF中给出的,你必须在平面的局部坐标系中转换它,就像这样。
// get the local coordinate system of the plane
var transform = Cesium.Transforms.eastNorthUpToFixedFrame(clickedPoint);
// get invert matrix
var inv = Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4());
// in this case actually world normal coincide with up direction(z axis of coordinate system)
// to avoid error we slightly extend it.
var extendedWordNormal = Cesium.Cartesian3.multiplyByScalar(clickedPoint, 1.001, new Cesium.Cartesian3());
// it will be nearly same as (0, 0, 1)
var localNormal = Cesium.Matrix4.multiplyByPoint(inv, extendedWordNormal, new Cesium.Cartesian3());
//var localNormal = new Cesium.Cartesian3(0, 0, 1);https://stackoverflow.com/questions/68161849
复制相似问题