我想將我的多邊形沿矢量投影到三維空間中的平面。我最好使用一個單一的變換矩陣來做到這一點,但我不知道如何構建這種矩陣。如何在三維空間中投影平面上的多邊形
鑑於
- 飛機的參數(由+ CZ + d AX +),
- 世界座標我的多邊形。正如標題所述,我的多邊形的所有頂點都位於另一個平面上。
- 沿着該突出我的多邊形(目前多邊形的平面的法線矢量)
目標 -a 4×4變換矩陣,其執行所需要的投影中,方向矢量
或
- 關於如何自己構建一個的一些見解
UPDATE
謝謝你的回答,它按預期工作。
對於發現這種情況的人來說,要小心一個詞:如果投影法線的平面與投影矢量平行,分母D將變成(幾乎)0,所以爲了避免奇怪的事情發生,對於這種特殊情況是必要的。我通過檢查D < 1e-5解決了這個問題,如果是的話,只需將我的多邊形沿着擠出矢量平移。
感謝您提供完整的解決方案。我馬上試試 – sum1stolemyname 2010-03-23 15:50:17
我已經實施了您的解決方案。然而,由於我的方向矢量是(1 | 0 | 0),並且飛機處於45°的角度,所以我遇到了麻煩:側視圖:'| ----> /'where |是多邊形和/是要投射的飛機。在這種情況下,a * dx/D = 1,其中第一列中的另外兩個entr爲0(dy = dzt = 0)。這導致整個coumn爲0,有效地縮放我的多邊形爲0.我的應用程序不喜歡那樣。你知道這個解決方法嗎? – sum1stolemyname 2010-03-24 08:25:50
@ sum1:第一列爲零意味着原始頂點的x座標將被忽略。這是預期的,因爲您的投影方向與x軸平行。它不會將您的多邊形縮放到0. – interjay 2010-03-24 10:10:51