2010-03-05 44 views
0

給定3D空間中的兩個點A和B,我得到一條線段LS。給定兩個新點A'和B'產生線段LS',我需要找到將LS轉換爲LS'的變換矩陣。假定線段的長度相等。如何找到對齊兩條線的變換矩陣?

我對如何計算矩陣理論,但我真的很喜歡你,從它是否是一個好的理論,或者優秀的人一些反饋存在一些更好的方法。

這裏是我的算法:

  1. 令L和L '是平行於LS的線條和LS'
  2. 求點P其中L相交L」
  3. 查找L和之間的角度v L」
  4. 最終變換矩陣將是:

    平移(-P)*旋轉(V)*翻譯(p)

一些背景的好奇:我建立這個在XNA,雖然數學題應該是相當普遍的。線段是連接線段較大結構的一部分。對於每個片段,我將爲每個動畫幀預先計算一個變換矩陣。

+0

難道這些線路始終相交? – tafa 2010-03-05 09:35:12

+0

@tafa:不,謝謝你指出。我不能保證,事實上很可能會想到,它們在某些情況下會是平行的。 – 2010-03-05 10:00:35

回答

2

與其尋找交集traslating A到A」就足夠了,我猜的。那麼你可能需要2次旋轉,一次使兩條線在同一平面上,另一次實際上對齊它們。

+0

是的,這應該工作,並思考它,可能更安全:如果LS和LS'是並行的,我的初始算法會遇到問題。 – 2010-03-05 09:58:55