Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

97
Vistas
Cálculo del radio de la Tierra en diferentes latitudes en JavaScript

Estoy trabajando en herramientas de dibujo en un mapa en el que calculo el radio de un círculo dibujado en un mapa en función de sus coordenadas. Se ve bien, pero veo que el círculo no coincide perfectamente con la posición del mouse si se dibuja lejos del ecuador. Esto se debe a que utilizo una ecuación que considera 6.371.000 metros el radio de la Tierra. El verdadero radio de la Tierra varía según la distancia desde el ecuador y descubrí que se puede calcular con esta fórmula:

 latitude B, radius R, radius at equator r1, radius at pole r2 R = √ [ (r1² * cos(B))² + (r2² * sin(B))² ] / [ (r1 * cos(B))² + (r2 * sin(B))² ]

según https://rechneronline.de/earth-radius/

¿Cómo puedo escribir esa fórmula en JavaScript?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Siempre podemos echar un vistazo a cómo lo hacen desde su código fuente. Su fuente se almacena aquí . El cálculo relevante es este:

 var z=Math.sqrt((Math.pow(r1*r1*Math.cos(x),2)+Math.pow(r2*r2*Math.sin(x),2)) / (Math.pow(r1*Math.cos(x),2)+Math.pow(r2*Math.sin(x),2)));

Pero tiene muchos cálculos redundantes. Podemos optimizarlo así:

 function getSpheroidRadius(B, r1, r2) { if (Math.abs(B) > 90) throw Error('Invalid Latitude value supplied: ' + B); let r1Sq = r1 * r1; let r2Sq = r2 * r2; let equatorProjectionSq = r1Sq * Math.cos(B) ** 2; let poleProjectionSq = r2Sq * Math.sin(B) ** 2; let r = Math.sqrt( ((equatorProjectionSq * r1Sq) + (poleProjectionSq * r2Sq)) / (equatorProjectionSq + poleProjectionSq) ); return r; } console.log(getSpheroidRadius(50, 6378.137, 6356.7523));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Suponiendo que su ecuación sea correcta, soy programador, no geógrafo; prueba esto:

 function square(number) { return Math.pow(number,2); } var lattitude; const radiusAtEquator = 6371000; const radiusAtPole = Number.MIN_VALUE; var radius = Math.sqrt(square(square(radiusAtEquator) * Math.cos(lattitude))) / (square(radiusAtEquator * Math.cos(lattitude)) + square(radiusAtPole * Math.sin(lattitude)))

Si quería sacar la raíz cuadrada de todo, simplemente elimine un ')' antes de '/' y agréguelo al final. Además, debe dar a la latitud un valor numérico antes de ejecutar el programa o no funcionará.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Escribiré la fórmula, pero puedes editarla para que sea más legible:

 function calculateR(B,r1,r2){ const R = Math.sqrt( ((r1*r1 * Math.cos(B))*(r1*r1 * Math.cos(B)) + (r2*r2 * Math.sin(B))*(r2*r2 * Math.sin(B)) / ((r1* Math.cos(B))*((r1* Math.cos(B)) + (r2*Math.sin(B)*(r2*Math.sin(B))))))) return R; } //call your method here : console.log(calculateR(1,2,3));
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda