2010-05-21 31 views
8

Hacer algunas cosas en 3D en wpf: quiere utilizar una prueba más simple para ver si todo está funcionando (antes de pasar a las curvas).¿Encontrar coordenadas de un punto entre dos puntos?

La pregunta básica se da dos puntos x1, y1, z1 y x2, y2, z2 He calculado la distancia entre los puntos. Pero, ¿cómo encontrar las coordenadas de otro punto (x3, y3, z3) que se encuentra en esa línea a cierta distancia?

I.e. si mi línea tiene una longitud de 100 entre -50,0,0 y 50,0,0, ¿cuáles son las coordenadas del punto a 100 * 0.1 a lo largo de la línea?

Creo que esta es una fórmula simple pero no he encontrado todavía ....

Respuesta

12

Para cada p entre 0 y 1, entonces esto le dará un punto en el segmento de línea:

(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1)) 
+0

+1. En el ejemplo, el que pregunta ha dado simplemente p = 0.1 y esto se traduce muy bien. Buen trabajo manteniéndolo simple. –

+1

¡Esto también fue muy útil! Entonces para resolver cada uno de mis puntos lo hice: x3 = x1 + p (x2-x1). Repita para y y z. – Nicros

6

Esto tiene que ver con las matemáticas, pero bien. Deje que P y Q sean los dos puntos y X el punto que está buscando.

P + r(Q - P) = X 

r indica un factor.

si 0 < r < 1: el punto x estará en la línea entre los dos puntos.

Eso es todo!

EDIT:

Para encontrar un punto a una distancia dada d de P (P1/P2/P3):

d²/euclidian_square_distance(P,Q) = r 

Insertar r en la ecuación mencionada anteriormente y que tendrá su punto ! :)

PD: Por cierto: P-Q = (Px - Qx, Py - Qy, Pz - Qz) ... apuesto a que sabía que alread :)

+0

¡Esto fue muy útil! – Nicros

+0

@Simon No debería ser la ecuación X = P + r (Q-P), a partir de ahora cuando ponemos r = 1, obtenemos 2P-Q, lo que no es correcto. – kkk

+0

@kkk Gracias. Ver edición – Simon

1

Vamos t puede variar de 0 a 1. Usar la siguiente:

(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)

Cuando t = 0 se obtiene el primer punto. Cuando t = 1 obtienes el segundo.

Este método se llama linear interpolation.

+0

¿Puede describir, utilizando su respuesta, cómo encontrar puntos de coordinación intermedios. –

0

una línea que une los puntos en 3d está dada por la ecuación:

(x - x1)/(x2 - x1) = (y - y1)/(y2 - y1) = (z - z1)/(z2 - z1)

Tiene los valores de x1, y1, z1, x2, y2, z2. Esto te dará una ecuación para la línea.

otra ecuación sería

((x-x1)^2 + (y-y1)^2 + (z-z1)^2)^(1/2) = distancia

Resuelve las 2 ecuaciones para obtener el valor de los puntos.

Cuestiones relacionadas