Iniciar sesión

Ver la versión completa : desplazar un punto en linea recta hacia otro (en tres dimensiones)



Licantropo
11/01/2005, 22:56
Hola, me he puesto a programar en java y tengo una duda:

Necesito desplazar un punto 1 con sus coordenadas x1,y1,z1 una distancia d hacia otro punto 2 con coordenadasx2,y2,z2. ¿Como lo podria hacer?
Se mas o menos lo que necesito, o eso creo:
*Ecuaciones de la recta que forman los puntos 1 y 2. (Tengo unas, pero creo que estan mal). No se donde tengo libro de matematicas, si alguien se las sabe y me lo puede decir.
*Ecuacion de la distancia: d=sqr((x-x1)^2+(y-y1)^2+(z-z1)^2): La formulita de Einstein. Donde x,y,z serian las nuevas coordenadas al desplazar el punto 1.

Y luego supongo que lo unico que tengo que hacer es despejar.

La pregunta es ¿Se hace asi?

Locke
11/01/2005, 23:40
Mucho mas sencillo. El vector que marca la trayectoria de 1 a 2 es sin ir mas lejos la posicion del punto 2 menos la posicion del punto 1.

(x2-x1, y2-y1, z2-z1)

En cada paso tendras que desplazar el punto 1 a lo largo de ese vector, para ello sumale la componente correspondiente de la trayectoria dividida entre el numero de pasos.

((x2-x1)/nºpasos, (y2-y1)/nºpasos, (z2-z1)/nºpasos) <-- Este seria el vector a sumar en cada paso al punto inicial.

Esto es, claro, si no me equivoco :)

Licantropo
12/01/2005, 00:11
Gracias, lo he probado y por lo menos hace cosas decentes: Los puntos se aproximan, pero hay una cosa que no me ha quedado muy clara. Es lo de nºpasos, a que te refieres. Yo lo que he puesto ha sido directamente la distancia, pero asi no sale.
Me he perdio en lo de cada paso y nºpasos ¿Lo que quieres decir es que tengo que hacer un bucle de 1 a d y en cada paso del bucle sumarle a las coordenadas del punto 1 ((x2-x1)/nºpasos, (y2-y1)/nºpasos, (z2-z1)/nºpasos)?
De nuevo, gracias :)

Locke
12/01/2005, 00:18
Con el numero de pasos me refiero a cuantos frames quieres tardar en recorrer esa distancia, es decir, si tiene que recorrer una distancia de 30 unidades y las recorre de 1 en 1 tendra que hacer la suma 30 veces. Si los recorre de 5 en 5 tendra que hacer la suma 6 veces.

nºpasos * recorrido_por_paso = distancia

si despejamos:

recorrido_por_paso = distancia / nº pasos

Espero que te quede claro... por decirlo de alguna manera, es el numero de veces que se ejecuta el bucle para que el punto llegue a su destino.

Licantropo
12/01/2005, 00:33
ha, creo que ya lo he entendio: nºpasos seria la distancia que separa los puntos entre la distancia que quiero avanzar.
Joe, llego tarde, jejej. Si me ha quedao claro, ya funciona. :musico: