<bdo id='nBD5V'></bdo><ul id='nBD5V'></ul>

    <legend id='nBD5V'><style id='nBD5V'><dir id='nBD5V'><q id='nBD5V'></q></dir></style></legend>

  1. <i id='nBD5V'><tr id='nBD5V'><dt id='nBD5V'><q id='nBD5V'><span id='nBD5V'><b id='nBD5V'><form id='nBD5V'><ins id='nBD5V'></ins><ul id='nBD5V'></ul><sub id='nBD5V'></sub></form><legend id='nBD5V'></legend><bdo id='nBD5V'><pre id='nBD5V'><center id='nBD5V'></center></pre></bdo></b><th id='nBD5V'></th></span></q></dt></tr></i><div id='nBD5V'><tfoot id='nBD5V'></tfoot><dl id='nBD5V'><fieldset id='nBD5V'></fieldset></dl></div>

    <small id='nBD5V'></small><noframes id='nBD5V'>

    <tfoot id='nBD5V'></tfoot>

      javascript纬度经度到地球上的xyz位置(threejs)

      时间:2023-09-06
      <legend id='H00t5'><style id='H00t5'><dir id='H00t5'><q id='H00t5'></q></dir></style></legend>
      <tfoot id='H00t5'></tfoot>

          <tbody id='H00t5'></tbody>

      1. <small id='H00t5'></small><noframes id='H00t5'>

            • <bdo id='H00t5'></bdo><ul id='H00t5'></ul>

                <i id='H00t5'><tr id='H00t5'><dt id='H00t5'><q id='H00t5'><span id='H00t5'><b id='H00t5'><form id='H00t5'><ins id='H00t5'></ins><ul id='H00t5'></ul><sub id='H00t5'></sub></form><legend id='H00t5'></legend><bdo id='H00t5'><pre id='H00t5'><center id='H00t5'></center></pre></bdo></b><th id='H00t5'></th></span></q></dt></tr></i><div id='H00t5'><tfoot id='H00t5'></tfoot><dl id='H00t5'><fieldset id='H00t5'></fieldset></dl></div>
                本文介绍了javascript纬度经度到地球上的xyz位置(threejs)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                我正在玩three.js

                i´m playing arround with three.js

                我想在更大的球体上渲染特定地理坐标上的对象,我非常接近解决方案,但我没有从 lat lon 获得正确的 xyz 位置

                i want to render objects on specific geocoordinates on a bigger sphere, i´m pretty near to the solution, but i dont get the correct xyz position from lat lon

                我在jsfiddle上设置了一个测试用例,有两个坐标

                i have set up a test case on jsfiddle, there are two coordinates

                latlons = [[40.7142700,-74.0059700], [52.5243700,13.4105300]];
                

                纽约和柏林

                这是我从纬度和半径计算 xyz 的函数

                and this is my function to calc xyz from lat lon and radius

                function calcPosFromLatLonRad(lat,lon,radius){
                
                // Attempt1
                var cosLat = Math.cos(lat * Math.PI / 180.0);
                var sinLat = Math.sin(lat * Math.PI / 180.0);
                var cosLon = Math.cos(lon * Math.PI / 180.0);
                var sinLon = Math.sin(lon * Math.PI / 180.0);
                var rad = radius;
                y = rad * cosLat * sinLon;
                x = rad * cosLat * cosLon;
                z = rad * sinLat;
                
                // Attempt2
                // x = radius *  Math.sin(lat) * Math.cos(lon)
                // y = radius *  Math.sin(lat) * Math.sin(lon)
                // z = radius * Math.cos(lat)
                
                
                // Attempt3
                // latitude = lat * Math.PI/180
                // longitude = lon * Math.PI/180
                // x =  -radius * Math.cos(latitude) * Math.cos(longitude)
                // y =  radius * Math.sin(latitude) 
                // z =  radius * Math.cos(latitude) * Math.sin(longitude)
                
                
                // Attempt4
                // var phi   = (90-lat)*(Math.PI/180);
                // var theta = (lng+180)*(Math.PI/180);
                // x = ((rad) * Math.sin(phi)*Math.cos(theta));
                // z = ((rad) * Math.sin(phi)*Math.sin(theta));
                // y = ((rad) * Math.cos(phi));
                
                
                
                   console.log([x,y,z]);
                   return [x,y,z];
                }
                

                但所有尝试都返回不同的 xy,它们都不正确(z 始终正确).

                but all attempts return different xy, and they are all not correct ( z is always correct).

                有人可以指导我正确的方式吗?我不知道可能出了什么问题

                could someone pleas guide me to the right way ? i have no idea what could be wrong

                这就是要玩的小提琴

                更新:正在工作的 jsfiddle

                推荐答案

                不幸的是,我无法进一步解释,但在玩了这个之后,它就像一个魅力:)

                unfortunatly i can´t further explain, but after playing around this one works like a charme :)

                function calcPosFromLatLonRad(lat,lon,radius){
                  
                    var phi   = (90-lat)*(Math.PI/180);
                    var theta = (lon+180)*(Math.PI/180);
                
                    x = -(radius * Math.sin(phi)*Math.cos(theta));
                    z = (radius * Math.sin(phi)*Math.sin(theta));
                    y = (radius * Math.cos(phi));
                  
                    return [x,y,z];
                
                }
                

                是的,那很酷,不是吗?而且我仍然对一些更短的方程式感兴趣

                yeah thats pretty cool isnt it ? And i´m still interested into some shorter equation

                工作小提琴

                这篇关于javascript纬度经度到地球上的xyz位置(threejs)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:使用 google maps API,我们如何使用 map.setCenter 函数 下一篇:地理位置:仅移动谷歌地图标记而不重新加载地图

                相关文章

                最新文章

                  <bdo id='WuOZd'></bdo><ul id='WuOZd'></ul>

                1. <legend id='WuOZd'><style id='WuOZd'><dir id='WuOZd'><q id='WuOZd'></q></dir></style></legend>
                2. <small id='WuOZd'></small><noframes id='WuOZd'>

                    <tfoot id='WuOZd'></tfoot>
                    <i id='WuOZd'><tr id='WuOZd'><dt id='WuOZd'><q id='WuOZd'><span id='WuOZd'><b id='WuOZd'><form id='WuOZd'><ins id='WuOZd'></ins><ul id='WuOZd'></ul><sub id='WuOZd'></sub></form><legend id='WuOZd'></legend><bdo id='WuOZd'><pre id='WuOZd'><center id='WuOZd'></center></pre></bdo></b><th id='WuOZd'></th></span></q></dt></tr></i><div id='WuOZd'><tfoot id='WuOZd'></tfoot><dl id='WuOZd'><fieldset id='WuOZd'></fieldset></dl></div>