在wpf中做一些3D的東西 - 想使用一個更簡單的測試,看看是否一切正常(在移動到曲線之前)。找到兩點之間的點的座標?
基本問題給出了兩點x1,y1,z1和x2,y2,z2我計算了點之間的距離。但是如何找到位於該線上某個距離處的另一個點(x3,y3,z3)的座標?
I.e.如果我的線在-50,0,0和50,0,0之間的長度爲100,沿線的100 * 0.1處的點的座標是多少?
我覺得這是一個簡單的公式,但我還沒有找到它....
在wpf中做一些3D的東西 - 想使用一個更簡單的測試,看看是否一切正常(在移動到曲線之前)。找到兩點之間的點的座標?
基本問題給出了兩點x1,y1,z1和x2,y2,z2我計算了點之間的距離。但是如何找到位於該線上某個距離處的另一個點(x3,y3,z3)的座標?
I.e.如果我的線在-50,0,0和50,0,0之間的長度爲100,沿線的100 * 0.1處的點的座標是多少?
我覺得這是一個簡單的公式,但我還沒有找到它....
0和1之間的每個p那麼這會給你線段上的點:
(x1, y1, z1) + p * ((x2, y2, z2) - (x1, y1, z1))
這與數學的事,但確定。假設P
和Q
是您要查找的兩個給定分數和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知道:)
讓t
從0變化到1.使用下列內容:
(x3, y3, z3) = (1-t)*(x1, y1, z1) + t*(x2, y2, z2)
T = 0時你得到的第一個點。當t = 1時,你會得到第二個。
該方法被稱爲linear interpolation。
你可以用你的答案描述如何找到中間座標點。 – 2017-04-18 10:29:10
接合在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個方程得到點的值。
+1。在這個例子中,提問者給出了簡單的讓p = 0.1,這很好地翻譯。好工作保持簡單。 – 2010-05-21 22:59:34
這也非常有用!所以要解決我的每一個問題: x3 = x1 + p(x2-x1)。重複y和z。 – Nicros 2010-05-22 00:02:32