Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Shell Root en 27 Junio 2011, 05:36 am



Título: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: Shell Root en 27 Junio 2011, 05:36 am
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.


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: _Enko en 28 Junio 2011, 17:28 pm
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;


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: Shell Root en 28 Junio 2011, 20:52 pm
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
  1.      |
  2.  180 | 90  
  3. -------------
  4.  270 | 360
  5.      |


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: _Enko en 28 Junio 2011, 22:33 pm

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)


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: Shell Root en 29 Junio 2011, 02:23 am
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...

Código:
1. ---> "Izq-Der"

2. <--- "Der-Izq"

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

4.         - "Diagonal Der-Izq"
      -
 <-


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: criskapunk en 29 Junio 2011, 03:19 am
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 :)



Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: Shell Root en 29 Junio 2011, 09:15 am
Yo lo tenia así, pero no me funciona en algunos casos... :/
Código
  1. resLat = inicio[0] - fin[0];
  2. resLon = inicio[1] - fin[1];
  3.  
  4. if( (resLat < 0) && ( resLon < 0) ){
  5.   return "--->";
  6. }else if( (resLat > 0) && ( resLon < 0) ){
  7.   return "Diag-->";
  8. }else if( (resLat < 0) && ( resLon > 0) ){
  9.   return "<--Diag";
  10. }else if( (resLat > 0) && ( resLon > 0) ){
  11.   return "<---";
  12. }


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: criskapunk en 29 Junio 2011, 19:52 pm
Esto...

Código
  1. resLat = inicio[0] - fin[0];
  2. resLon = inicio[1] - fin[1];

No seria asi?

Código
  1. resLat = fin[0] - inicio[0];
  2. resLon = fin[1] - inicio[1];


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: Shell Root en 29 Junio 2011, 21:37 pm
.., aunque lo estaba haciendo alrevez :/,


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: criskapunk en 29 Junio 2011, 21:47 pm
En que casos no te funciona?


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: Shell Root en 30 Junio 2011, 02:43 am
Pues sí, pero en 90%, algunos puntos no concuerdan con la dirección correcta, tendré que investigar más :D

LOS AMÓ A TODOS!  :-*


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: Shell Root en 1 Julio 2011, 06:50 am
COÑO!, ahora necesito el calculo para la dirección de arriba-abajo y abajo-arriba


Título: Re: Dirección entre dos puntos (Latitud-Longitud)
Publicado por: criskapunk en 1 Julio 2011, 14:24 pm
No estoy seguro de que funcione...

X = (xf - xi)
Y = (yf - xi)

(x = 0) y (y > 0) Vertical hacia arriba.
(x = 0) y (y < 0) Vertical hacia abajo.
(x > 0) y (y = 0) Horizonal hacia la derecha.
(x < 0) y (y = 0) Horizontal hacia la izquierda.
(x = 0) y (y = 0) Es un punto, no una fecha.

Un saludo :)