Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

96
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!