Tres latitud y longitud al algoritmo de coordenadas mundiales

1. Introducción

Utilice Tres para crear una tierra (esfera) tridimensional, convierta la latitud y la longitud en coordenadas cartesianas para mostrarlas en la esfera.

En segundo lugar, el proceso

1 、 SphereGeometry 生成

El constructor de SphereGeometry es el siguiente

SphereGeometry(radius : Float, widthSegments : Integer, heightSegments : Integer, phiStart : Float, phiLength : Float, thetaStart : Float, thetaLength : Float)
radius — 球体半径,默认为1。
widthSegments — 水平分段数(沿着经线分段),最小值为3,默认值为8。
heightSegments — 垂直分段数(沿着纬线分段),最小值为2,默认值为6。
phiStart — 指定水平(经线)起始角度,默认值为0。。
phiLength — 指定水平(经线)扫描角度的大小,默认值为 Math.PI * 2。
thetaStart — 指定垂直(纬线)起始角度,默认值为0。
thetaLength — 指定垂直(纬线)扫描角度大小,默认值为 Math.PI。

Mire principalmente phiStart y thetaStart, que son los puntos de partida horizontal y vertical de la esfera, respectivamente. El punto de partida horizontal es el semieje negativo del eje X, y el punto de partida vertical es el semieje positivo del eje Y, como se muestra en la figura, lo que significa que si la esfera está mapeada, la mitad izquierda de la textura es la mitad negativa del eje X correspondiente al punto de partida. Eje, el lado superior de la textura corresponde al semieje positivo del eje Y. Después de conocer esto, puede mapear la esfera.

2. Textura esférica

La textura utiliza el mapa mundial de la proyección de Mercator.

Después de pegar el mapa, muestra que la mitad izquierda corresponde al semieje negativo del eje x de la esfera, como se muestra en la figura, aquí debe prestar atención a la posición del primer meridiano (es decir, el Línea de cero grados de Mercator)

3. Longitud y latitud a las coordenadas mundiales (coordenadas cartesianas)

Antes de calcular, debe comprender el significado de latitud y longitud, como se muestra en la figura siguiente.

Comenzando desde el meridiano, gire A (50) grados a la derecha para llegar a 50 grados de longitud este, y luego gire B (40) grados hacia arriba con el ecuador como punto de partida para alcanzar los 40 grados de latitud norte. Después de comprender la longitud y la latitud se calculan, puede comenzar a derivar La fórmula es, establezca el radio de la esfera en R, R * sin (B) puede calcular la coordenada del eje Y del punto. R * cos (B) Proyecta el punto en el plano formado por el eje ZX para obtener el punto A1, A1 * COS (A) puede obtener la coordenada del eje Z y A1 * sin (A) puede obtener la coordenada del eje X. el código se muestra a continuación

function getPosition(longitude, latitude, radius) {
    var lg = THREE.Math.degToRad(longitude);
    var lt = THREE.Math.degToRad(latitude);
    var temp = radius * Math.cos(lt);
    var x = temp * Math.sin(lg);
    var y = radius * Math.sin(lt);
    var z = temp * Math.cos(lg);
    return {
        x: x,
        y: y,
        z: z
    }
}

Ingrese las coordenadas de latitud y longitud (50, 40). Los resultados se muestran en la figura. Algunas personas pueden tener preguntas. El efecto real de la posición del punto es muy diferente al de la imagen de ejemplo anterior. Para este problema, debe buscar de vuelta al original Se calcula la posición del meridiano. El cálculo del algoritmo se basa en el semieje positivo del eje Z como punto de partida. De hecho, el meridiano original después del mapeo está en el semieje positivo del eje X, con una diferencia de 90 grados entre ellos, por lo que en el cálculo Antes debe sumar 90 a la longitud para el cálculo.

Ingrese (140, 40), el resultado de salida es como se muestra en la figura, el punto actual es el punto correcto

Supongo que te gusta

Origin blog.csdn.net/oneKnow/article/details/106891238
Recomendado
Clasificación