Problem
我对铯如何计算大地测量和地心表面法线有点困惑。根据计算法线生成的平面实际上并不与给定点的椭球面相切,而且,根据大地表面法线创建的平面与根据地心表面法线生成的平面完全相同。
示例以及为什么我需要这个
In this 沙堡 https://sandcastle.cesium.com/#c=vVXbbtswDP0VIU8OYChttwFDmhbrvHQtml7QZOtLgEG1mUSoLBmSnLYb8u+jfIkvdYJhwOY8xCJ5DkXqUF4zTdYcnkGTEyLhmQRgeBrT75nNm/fCbB0oaRmXoOe9/vFcut8akSsmI9GGTkMNIKcJC2G8Bmkv8iAvT0NDhlDjWAo0NWAvZZLas9ByJb1FKvMXcOg++TWXBB+XL1FcWsxWUJkQJNCEh093yvAKQ5Ni6bKUWKuZNAulY8QXO52VJkOBGXujtF19S2bqnL9AdK5ZDF6WcUvTSKt5jEnWYCiLIq/WgC/wmC6vVQTimlnNX+7KSK8oxT1x5SfDanM+IYMB2XITq0jk6CqgALm0K8QcHriHHviV75lHmeuIHpTGTb/ehFAJpasGBG5JF1rF93gWKvZalWIvcRtFhbXNl/0d5ifi1z24HpJabGbFhoop/wlu137TtwK+XNl7WIAGGWJEsbeLpp3e3N6MW1CVWoGifHBVY9E+abrzYof5v5Ns6dgUPJt6a5aAJ2J5iCqImah6NBaCJ0bxiD58nX58T8u4aaoXKPE8PNeJXx+DgGmLb0y+8/qtPKgfPPc/yVREdubal2xXWXeCSWiOa2bymmE+QV3t2/Q+nkZgk+mvVeW436oqt3ZU2NJJxGOQBpnNsLNpR952lrZT1W9xxMyC5kwUcvJ36ukfl/r2GP5LsR1j526tFLp92cUybF4znydnwdWeCcZJ/bCzp3O58Xd9YGavCdDJ+Hz2I5hcBlf9457fGxn7KuC05PvE4wRvd5Jq4VE6sBBjR7Efg8c0fAJLQ2NKkY4Gdego4mvCo5OODyEJBTMGPYtUZJfbvHc6GmD8G6hQLOJyebsGLdirC1sdnk5yI6V0NMBlN9IqJR6ZbjH/Bg当您单击地球表面时,将绘制 XYZ 轴以及应与椭球体相切的平面。
我需要的是在给定点获得与椭球体相切的 XY 平面,然后将其他点投影到该平面上。问题是,正如我所见,飞机根本不与椭球体相切。
顺便说一句 - 当我使用内置方法时:Cesium.EllipsoidTangentPlane();我还得到了奇怪的结果 - 平面仍然不与椭球体相切,并且还漂浮在太空中的某个地方。这是沙堡 https://sandcastle.cesium.com/#c=nVRdb9owFP0rFk9BihzaR0rRpgzUapSiwrYXpMnYl2DVsSPbCWUT/712PpaQ0pc5D/h+nHPvPbmkIBoVHI6g0T2ScEQxGJ6n+GfpC7YDWtqxkpZwCXo7GN5tpX8KhzwQyUQfuqYaQK4zQmFWgLQPVVJQlcGUOKjxLDUaG7CPMsvtV2q5ksE+l9UFPHqI/m4lcsfXyxSX1lWrqQwFCTjj9HWlDG8xOKtNX8VjqZJGCcBCJUHJ0QQ8qdVEmr3SqSOuR9g0LoOBGLtU2h5+ZBs152/A5pqk0KO56Efz1FUvwGDCWNBR5hvs8uRJMRBPxGr+tmoyg3pGf9I2jsZtcyFCUYT+cSOrEPN0LVCATOzBYW5G/uBR2MaOnJWhWzxqnOdhVwSqhNKtALE38V6r9MW9JJUGvUmdyK6NesJO843w4+pVhd2Is8eok1t6naBizf+A7zq8jB2AJwf7AnvQIKnLqHt7uPTj5fNy1oOq3Aq3rb/81G7oEF2Gq2HH1a/f5SZwrnnOXWlACJ4ZxdmGyMQNvhJEwuXKz66lXF2R/xDOc30UrvJe7Q2XwZ4kjKcgjatgxt3OY6KtuxF5G1RrUy4Oau/DHk9KLGhORK1e+Kl8zXMOP/swbE4Z4MVsvvkdLx7j78O7QTiYGHsSMG04v/A0c38+lGsRYBxZSN1sruFol9NXsJga0wg8ibrQCeMF4uz+ygcMUUGMcZF9Lsrd2w6mk8jlf4AKRRiXyXMBWpCTTzvcTBeVE2M8iZx5HWmVEjuie8zv.
感谢任何帮助,因为我不明白这里发生了什么。
平面的法线定义在平面的局部坐标系上,其中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://sandcastle.cesium.com/#c=tVVdb9owFP0rHk9Bihzo9kRptY61arWWosLWF6TJxBew5tiR7dDSav99N19NAp7Wl1lIxPfjnHtPrp0dM2Qn4AkMOSMKnsgErMgS+qOwBcteXOwnWjkmFJhlr3+6VEtFcJV51MaggG6kXgHlkLrtAqy72GC4dQswBh8Q25kMmkxk3TLF5SHtPDYAap6yGC53oNx1GRRUVDFTO2abCioMasHdqDRzF7ETWgXrTJUPkGP0yWsZXTPHUsS/gM+0UA7pO22k6JppK5p0mlbbhjZfYh18aAP1G1e+DLjMqE5GTu0MU3atTYK8VcuL2mQpMOum2rjt93Shr8Qz8CvDEgg6PEeYQu0atDvmjHj+RNEIxsIbOCsaeqMP26JXOUH/GBueHSgO/FEbPs1hZEM1YcbhE1MfaZJJJ1K5/7Kfx0wy06k4JEM6GAw7lE2uj1VqRDmkqztruAr0ADsNPXW+ky6Kjgn9iYOQ4G/YTfdW2hJGFS7xAkErksZSKwj671WkM59GJDiNO7CUcR60AL7CKtvcaQ6yVGpWRwav3dFMmhgyIq2RQDHIGz5xmvAcspssQW3cFvOGg2LRQdgNeBK88J/QQeP47XnJsZbatETLt3RtdPKAh1ongVcEPI9YXdX8QV/1OR11Dnh4GIS2ETlILTx43uQcX1XeW3js34LYbN0DrMGAijGqKvy6a6fT++mlJ11nTuIF+pjLg+p4IkpBRuV/u/dCwbCt5pGYqWQKuqM7y03tscP5pYP/pGrO5Ve19BR/np65SEBZhLcj72E4CZo5a0au70HCGw6MYLLSL/yngKXxbx+exT4Fent5tfg5ub2ZfOuf9sLe2Lq9hPMa57NIUrysSWZkQGnkIMEusexolaFOjsbW1jzjqJ065mJHBD/zfFxRZGYtetaZLIZx2TsfRxh/lCo140Jt7vGal2yfh22H57elkVI6jnDrz3RayxUzB8h/AA和这个sample https://github.com/3DGISKing/CesiumJsSamples/tree/master/Advanced/FindBestFitPlane
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)