Dirección entre dos puntos (Latitud-Longitud)

Iniciado por Shell Root, 27 Junio 2011, 05:36 AM

0 Miembros y 1 Visitante están viendo este tema.

Shell Root

Es posible saber la dirección de un trayecto si tengo la Lat-Lon inicial y la final...
Por ejemplo si tengo PI=Punto Inicial; PF= Punto Final.

PI ----> PF
ó
PF <---- PI
o Quizás diagonal.


No se donde poner esto, así que lo pongo en programación general.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

_Enko

Sabiendo coordenadas inicial (x1, y1) y la coordenadas finales (x2, y2) podrias calcular el Vector Direccion

dx=x2-x1;
dy=y2 - y1;

teniendo el vector direccion dx:dy (ojo, no son coordenadas, es la direccion)

Puedes calcular el angulo
angle=atan2(dy, dx)

y si lo quieres en radianes
angled= atan2 (y,x) * 180 / PI;

Shell Root

#2
Bueno, lo entiendo, aunque lo estaba haciendo alrevez :/, podríamos darme un ejemplo para graficar el angulo?

Supongo que sería algo así,

Código (php) [Seleccionar]
      |
  180 | 90 
-------------
  270 | 360
      |
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

_Enko


No te entiendo.... te refieres como una manecilla de reloj?

x1= 0;
y1 = 0;
angulo = 90
Distancia = 10
anguloRadianes = angulo * Pi / 180;
x2 = sin(anguloRadianes) * Distancia;
y2 = cos(anguloRadianes) * Distancia.
Linea(x1,y1, x2, y2)

Shell Root

#4
A lo que me refiero es que necesito saber si la dirección de las 2 posiciones, es de izq a der, o der a izq, etc... Supongo que el angulo debería ser entre los 360°

Esta dirección es más que todo para poder mostrar una imagen de una fecha, y son 4 posibles imagenes, que son estás...

1. ---> "Izq-Der"

2. <--- "Der-Izq"

3. -
      -
        -> "Diagonal Izq-Der"

4.         - "Diagonal Der-Izq"
      -
<-
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

criskapunk

No estoy seguro, pero podrias hacer algo asi.

PI = (xi; yi)
PF = (xf; yf)

PFPI = PF - PI = (xf - xi; yf - xi).

Y a partir de los valores que te de:
Si (xf - xi) es positivo e (yf - xi) es positivo = 1º cuadrante.
Si (xf - xi) es negativo e (yf - xi) es positivo = 2º cuadrante.
Si (xf - xi) es negativo e (yf - xi) es negativo = 3º cuadrante.
Si (xf - xi) es positivo e (yf - xi) es negativo = 4º cuadrante.

Si alguno de los valores da 0, te toca calcular si esta a 0, 90, 180 o 270 grados.

Un saludo :)


Shell Root

Yo lo tenia así, pero no me funciona en algunos casos... :/
Código (javascript) [Seleccionar]
resLat = inicio[0] - fin[0];
resLon = inicio[1] - fin[1];

if( (resLat < 0) && ( resLon < 0) ){
  return "--->";
}else if( (resLat > 0) && ( resLon < 0) ){
  return "Diag-->";
}else if( (resLat < 0) && ( resLon > 0) ){
  return "<--Diag";
}else if( (resLat > 0) && ( resLon > 0) ){
  return "<---";
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

criskapunk

Esto...

Código (java) [Seleccionar]
resLat = inicio[0] - fin[0];
resLon = inicio[1] - fin[1];


No seria asi?

Código (java) [Seleccionar]
resLat = fin[0] - inicio[0];
resLon = fin[1] - inicio[1];

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

criskapunk