2010-05-21 4 views
8

Faire des choses en 3D dans wpf-voulez utiliser un test plus simple pour voir si tout fonctionne (avant de passer aux courbes).Trouver les coordonnées d'un point entre deux points?

La question de base est donnée deux points x1, y1, z1 et x2, y2, z2 J'ai calculé la distance entre les points. Mais comment trouver les coordonnées d'un autre point (x3, y3, z3) qui se trouve sur cette ligne à une certaine distance?

I.e. si ma ligne est longue de 100 entre -50,0,0 et 50,0,0, quelles sont les coordonnées du point à 100 * 0,1 le long de la ligne?

Je pense que cela est une formule simple mais je n'ai pas encore trouvé ....

Répondre

12

Pour chaque p entre 0 et 1, alors cela vous donnera un point sur le segment de ligne:

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

+1. Dans l'exemple, le questionneur a simplement laissé p = 0.1 et cela traduit bien. Bon travail, c'est simple. –

+1

C'était aussi très utile! Donc, pour résoudre chacun de mes points, j'ai fait: x3 = x1 + p (x2-x1). Répétez l'opération pour y et z. – Nicros

6

Cela a à voir avec les mathématiques, mais ok. Soit P et Q être les deux points donnés et X le point que vous recherchez.

P + r(Q - P) = X 

r indique un facteur. Si 0 < r < 1: le point x sera sur la ligne entre les deux points.

C'est tout!

EDIT:

Pour trouver un point à une distance donnée d de P (p1/p2/p3):

d²/euclidian_square_distance(P,Q) = r 

Insérer r dans l'équation mentionnée ci-dessus et vous aurez votre point ! :)

PS: BTW: P-Q = (Px - Qx, Py - Qy, Pz - Qz) ... Je parie que vous saviez alread :) il

+0

C'était très utile! – Nicros

+0

@Simon L'équation ne devrait-elle pas être X = P + r (Q-P), à partir de maintenant en mettant r = 1, nous obtenons 2P-Q, ce qui n'est pas correct. – kkk

+0

@kkk Merci. Voir édition – Simon

1

Laissez-t varier de 0 à 1. Utilisez les éléments suivants:

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

Quand t = 0 vous obtenez le premier point. Quand t = 1, vous obtenez la seconde.

Cette méthode est appelée linear interpolation.

+0

Pouvez-vous décrire, en utilisant votre réponse, comment trouver des points de coordonnées intermédiaires. –

0

une ligne reliant les points en 3D est donnée par l'équation:

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

Vous avez les valeurs de x1, y1, z1, x2, y2, z2. Cela vous donnera une équation pour la ligne.

une autre équation serait

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

Résolvez les 2 équations pour obtenir la valeur des points.

Questions connexes