Foros del Web » Programando para Internet » Javascript »

¿Como representar una trayectoria? [sin transiciones CSS]

Estas en el tema de ¿Como representar una trayectoria? [sin transiciones CSS] en el foro de Javascript en Foros del Web. Buenas a todos! Llevo un par de dias intentando hallar la manera mas adecuada de representar una trayectoria para mover un elemento dentro de un ...
  #1 (permalink)  
Antiguo 22/03/2014, 08:05
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
¿Como representar una trayectoria? [sin transiciones CSS]

Buenas a todos!


Llevo un par de dias intentando hallar la manera mas adecuada de representar una trayectoria para mover un elemento dentro de un sistema que estoy creando.

Vease, tengo un Div en unas coordenadas concretas dentro del body, ejemplo (100,100), y tengo dos puntos por ejemplo A(150,150) B(300,300) que unidos entre si
representan una trayectoria por la cual quiero que pase mi Div.

Hasta ahora lo que hacia era representar trayectorias en linea recta en base a cualquiera de los dos ejes y sumar o restar pixeles con las herramientas de intervalos,
con lo que creaba la animacion y mi div se podia mover en linea recta de forma vertical o hotizontal.

El problema con el que me encuentro, es que no encuentro forma de como mover el div para una trayectoria especifica (que no sea linea recta en vertical o u horizontal),
sumando o restando pixeles con los intervalos, Para calcular la trayectoria solo dispongo de dos puntos (A y B) y las coordenadas de Div.

Descartando por completo el uso de herramientas como las transiciones de CSS, Me he planteado usar Vectores o funciones lineales aunque no se muy bien como aplicarlos a esto
(soy de humanidades, aunque no me gustan las matematicas).



Gracias de antemano a todos los que intentéis ayudarme!
  #2 (permalink)  
Antiguo 22/03/2014, 12:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como representar una trayectoria? [sin transiciones CSS]

Aún estoy algo aturdido por el concierto al que asistí anteayer, pero como me pareció interesante este hilo, me propuse a hacer algo al respecto.

Código Javascript:
Ver original
  1. var div = document.getElementsByTagName("div")[0],
  2.     limite = prompt("Distancia:"),
  3.     x = 0,
  4.     fn = function(){
  5.         x += 5;
  6.         if (x <= limite){
  7.             div.style.top = x + "px";
  8.             div.style.left = x + "px";
  9.         }
  10.     };
  11.  
  12. setInterval(fn, 1000);

El usuario ingresará la cantidad máxima de píxeles que el Div debe desplazarse, luego, cada segundo ejecuto la función que realizará el desplazamiento. En cada ocasión, compruebo que el valor del contador que utilizo para el desplazamiento sea menor o igual al límite, mientras se cumpla esta condición, sigo desplazando al Div, caso contrario, dejo de hacerlo.

DEMO

Si no es exactamente lo que buscabas, al menos te puede dar una idea para lo que deseas realizar.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 23/03/2014, 06:25
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: ¿Como representar una trayectoria? [sin transiciones CSS]

gracias por participar alexis88 !

viendo tu ejemplo, pienso que es mas o menos lo que yo ya podia obtener, es decir, hasta ahora no tenia problema en hacer una trayectoria recta sobre el eje X y sobre el eje Y , y tu has propuesto mas o menos lo mismo , es decir, sumar un valor fijo para x y para y al mismo tiempo dando lugar a una trayectoria que baja en Y u suma en X tantos pixeles como les sumes cada intervalo.


Lo que yo inteto conseguir es representar fielmente trayectorias que no se basen en un valor fijo para x o y, imaginate que quiero trazar una linea recta en base desde el 0,0 con un valor de 15º, ¿como lo hago? , como represento rectas que no se basen en valores fijos para x e y ? , espero que se me entienda lo que busco, uno de mis grandes problemas es expresarme
  #4 (permalink)  
Antiguo 23/03/2014, 11:22
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Como representar una trayectoria? [sin transiciones CSS]

Francamente, no se me ocurre cómo hallar las magnitudes de los vectores que forman un ángulo dado si no tengo al menos la magnitud de uno de ellos. Lo más cercano que llegué a estar es realizando el desplazamiento pero dando valores a los vectores.

Código Javascript:
Ver original
  1. var div = document.getElementsByTagName("div")[0],
  2.     limX = prompt("Eje X:"),
  3.     limY = prompt("Eje Y:"),
  4.     x = 0, y = 0,
  5.     fn = function(){
  6.         if (++x <= limX)
  7.             div.style.top = x + "px";
  8.        
  9.         if (++y <= limY)
  10.             div.style.left = y + "px";
  11.        
  12.         if (div.style.top == limX + "px" && div.style.left == limY + "px")
  13.             clearInterval(intervalo);
  14.     },
  15.     intervalo = setInterval(fn, 50);

De este modo, el Div se desplazará hasta los límites dados.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 23/03/2014, 14:22
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: ¿Como representar una trayectoria? [sin transiciones CSS]

Si tenemos las coordenadas de los puntos, junto a las coordenadas del punto (0,0) y las coordenadas del div en cuestión creo que hay toda la informacion necesaria...


Por ejemplo, podemos obtener los grados de la linea recta (que es la trayectoria) respecto al punto 0 Y y la x de div , simplemente formando un triguangulo y ob teniendo los grados de cada vertice. Pitagoras to rescue!

Aunque sinceramente si uso intervalos y quiero que en cada intervalo se represente fielmente la posicion de la trayectoria. Pienso que la unica salida es una funcion lineal.

Pero en mates estoy muy verde, no se como obtener una ecuacion de primer grado para hallar una recta , resolverla si, pero obtenerla ...

Luego seria ir dando valores a las X y a las Y para cada llamada del intervalo, o al menos desde mi punto de vista puede ser asi . Aunque francamente puede que este equivocado.

Etiquetas: Ninguno
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 10:12.