Calcular distancia entre dos puntos (latitud, longitud)
-
Thursday, November 03, 2011 11:32 AM
Buenas!
Mi pregunta es la siguiente: tengo un método que calcula la distancia entre dos puntos mediante unos calculos en lo que se deberia utilizar valores decimales para devolver la distancia con una precisión aceptable.
El problema es que hay operadores y funciones que no me permiten utilizar variables deicmal, por ejemplo Math.Cos...Puedo cambiar los tipos de las variables a double y funcionaria correctamente pero la precisión se vería reducida considerablemente.
Gracias de antemano!
All Replies
-
Thursday, November 03, 2011 11:38 AMModerator
hola
pero porque necesitarias el Math.Cos() para calcular distinacia ?
digo si haces
double punto1 = (decimal)20.5;
double punto2 = (decimal)26.1;
double distancia = punto2 - punto1;
o sea imagino la formula deberia ser algo simple, me suana raro que un coseno intervenga
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Thursday, November 03, 2011 11:45 AM
Una porción del código sería esta para que sirva de ejemplo.
// paso los grados a radianes
LatA = LatA * Math.PI / 180;
LatB = LatB * Math.PI / 180;
LngA = LngA * Math.PI / 180;
LngB = LngB * Math.PI / 180;
// 6371 es el radio de la tierra
// 6371 * ACos(Math.Cos(LatA) * Cos(LatB) * Cos(LngB - LngA)+ Sin(LatA) * Sin(LatB))
double operacion = Math.Cos(LatA) * Math.Cos(LatB) * Math.Cos(LngB - LngA) + Math.Sin(LatA) * Math.Sin(LatB);
-
Thursday, November 03, 2011 12:13 PMModerator
hola
pero analziando la funcion de calculo
esta soporta como parametro un double, con eso ya puede usar decimales
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marked As Answer by Eduardo PorteschellerMicrosoft Community Contributor, Moderator Monday, November 07, 2011 5:00 PM
-
Thursday, November 03, 2011 12:20 PM
Creo que no me he explicado bien, necesito usar valores de tipo decimal que tienen mas precisión que los de tipo double. No me refiero a decimal de valores decimales.
No se si me explico o te estoy liando mas ^^.
-
Thursday, November 03, 2011 3:28 PMLos elementos de tipo decimal no almacenan la distancia en km, lo que referencian son las coordenadas. Un ejemplo de coordenadas podría ser (37,391699803993100, -6,428940268233420). Esas coordenadas referencian a un punto y busca la distancia entre esas coordenadas y las de otro punto que yo seleccione en el mapa.

