2010-05-21 37 views
8

在wpf中做一些3D的東西 - 想使用一個更簡單的測試,看看是否一切正常(在移動到曲線之前)。找到兩點之間的點的座標?

基本問題給出了兩點x1,y1,z1和x2,y2,z2我計算了點之間的距離。但是如何找到位於該線上某個距離處的另一個點(x3,y3,z3)的座標?

I.e.如果我的線在-50,0,0和50,0,0之間的長度爲100,沿線的100 * 0.1處的點的座標是多少?

我覺得這是一個簡單的公式,但我還沒有找到它....

回答

12

0和1之間的每個p那麼這會給你線段上的點:

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

+1。在這個例子中,提問者給出了簡單的讓p = 0.1,這很好地翻譯。好工作保持簡單。 – 2010-05-21 22:59:34

+1

這也非常有用!所以要解決我的每一個問題: x3 = x1 + p(x2-x1)。重複y和z。 – Nicros 2010-05-22 00:02:32

6

這與數學的事,但確定。假設PQ是您要查找的兩個給定分數和X

P + r(Q - P) = X 

r表示一個因子。

if 0 < r < 1:點x將在兩點之間的線上。

就是這樣!

編輯:

要找到與P給定距離d(P1/P2/P3)點:

d²/euclidian_square_distance(P,Q) = r 

上述公式中插入R和你有你的觀點! :)

PS:順便說一句:P-Q = (Px - Qx, Py - Qy, Pz - Qz) ...我敢打賭,你alread知道:)

+0

這非常有幫助! – Nicros 2010-05-21 23:52:56

+0

@Simon不應該等式X = P + r(Q-P),就像現在把r = 1時一樣,我們得到2P-Q,這是不正確的。 – kkk 2018-02-26 10:13:12

+0

@kkk謝謝。請參閱編輯 – Simon 2018-02-28 13:41:09

1

t從0變化到1.使用下列內容:

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

T = 0時你得到的第一個點。當t = 1時,你會得到第二個。

該方法被稱爲linear interpolation

+0

你可以用你的答案描述如何找到中間座標點。 – 2017-04-18 10:29:10

0

接合在3d中的點的線是由等式給出:

(X - X1)/(X2 - X1)=(Y - Y 1)/(Y2 - Y1)=(Z - z1)/(z2 - z1)

您有x1,y1,z1,x2,y2,z2的值。這會給你一個等式的線。

另一個方程將是

((X-X1)^ 2 +(Y-Y1)^ 2 +(Z-Z1)^ 2)^(1/2)=距離

求解2個方程得到點的值。