Foros del Web » Programando para Internet » Javascript »

Google Maps - Crear una cuadrado partiendo de 2 puntos (trigonometría)

Estas en el tema de Google Maps - Crear una cuadrado partiendo de 2 puntos (trigonometría) en el foro de Javascript en Foros del Web. Hola amigos, antes que nada, disculpas porque no se si es un tema realmente sobre javascript. Ando un tiempo dandole vueltas a este asunto, como ...
  #1 (permalink)  
Antiguo 26/03/2012, 04:10
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Google Maps - Crear una cuadrado partiendo de 2 puntos (trigonometría)

Hola amigos, antes que nada, disculpas porque no se si es un tema realmente sobre javascript.

Ando un tiempo dandole vueltas a este asunto, como generar un cuadrado partiendo de dos puntos en un mapa.

Hasta el momento entiendo que es una cuestión de trigonometría, he conseguido crear cuadrados, pero siempre inclinados (debe ser un cuadrado perfecto, 2 angulos de 90º).

Parto de una fórmula que aparece en esta página (pulsa el icono del cuadrado C para ver el efecto):
http://www.dharmainitiative.it/index.php?id=test&n=2

Concrétamente: Square C

La formula vendría a ser algo como esto:
ll3 = cos(90°)×(llM-ll1) - sin(90°)×(ltM-lt1) + llM
lt3 = sin(90°)×(llM-ll1) + cos(90°)×(ltM-lt1) + ltM
ll4 = cos(90°)×(llM-ll2) - sin(90°)×(ltM-lt2) + llM
lt4 = sin(90°)×(llM-ll2) + cos(90°)×(ltM-lt2) + ltM

l3 y l4 serían los dos puntos que necesito para crear el cuadrado (junto con los otros dos puntos que ya dispongo). La cuestión es que no se por donde coger el cos(90°) y sin(90°)

Estoy haciendo esto, pero no hay forma (llm es el centro entre l1 y l2):
(Math.cos(90) * (llM - ll1)) - Math.sin(90) * (ltM - lt1) + llM;
... (resto funciones)

Alguien se le ocurre que estoy haciendo mal?
  #2 (permalink)  
Antiguo 26/03/2012, 07:16
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 1 mes
Puntos: 12
Respuesta: Google Maps - Crear una cuadrado partiendo de 2 puntos (trigonometría)

No estoy seguro de entender el contexto de tu problema, pero cos(90°) y sin(90°) son constantes, concretamente 0 y 1.
Sabiendo eso, puedes simplificar las formulas quedando como:
ll3 = - (ltM-lt1) + llM
lt3 = (llM-ll1) + ltM
ll4 = - (ltM-lt2) + llM
lt4 = (llM-ll2) + ltM

Ademas las funciones trigonometricas de java trabajan con radianes no con grados. Asi que si insistes en utilizar los metodos de Math, tendras que poner Math.cos(Math.PI/2) en lugar de Math.cos(90).
  #3 (permalink)  
Antiguo 26/03/2012, 08:59
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Respuesta: Google Maps - Crear una cuadrado partiendo de 2 puntos (trigonometría)

Hola luis_vega, efectivamente, Math.sin y Math.cos trabajan con radianes. Confío en utilizar directamente las constantes 1 y 0.

La idea es crear un cuadrado a partir de dos coordenadas fijas. El ejmplo más claro es este:
http://maps.google.com/?q=http%3A%2F%2Fwww.dharmainitiative.it%2Ftests%2F 2%2Fmarvincandle.php%3Fid%3D3%26lt1=38.795412%26lg 1=0.181723%26lt2=38.794977%26lg2=0.181542

Donde apartir de los puntos 1 y 2 se generan varios cuadrados, me basta con conseguir el del centro, pero ya que estamos, no estaría de más entender como funciona.

Como comentaba antes, estos cuadrados se generan desde aquí
http://www.dharmainitiative.it/index.php?id=test&n=2

He hecho una prueba en jsfiddle, verás como el cuadrado no es un rectangulo perfecto, el cálculo me falla por alguna parte.

http://jsfiddle.net/rwqxU/

Agradecería cualquier sugerencia.

Gracias!!!

Última edición por jenguidanos; 26/03/2012 a las 09:38

Etiquetas: cuadrado, google, maps, trigonometria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:19.