我正在3D空間中工作。我有一條射線,或者更具體地說,是3D空間中光線的起始和透射向量。我也有一個三角形,我知道這個三角形是被射線擊中的。用三角形表示我有三個三維點。我也可以很容易地計算出這個三角形的法線向量。在3D空間中反射三角形上的光線
現在我需要得到一個新的射線,這將是特定命中後的反射。
我也不知道三角形的接觸點在哪裏,但顯然必須考慮到獲得反射光線。那一點將成爲新射線的開始。
這在2D中很容易做,但我無法弄清楚如何在3D中做到這一點。
我使用C++和OpenFrameworks與ofxRay附加組件。
一對於矢量代數,你喜歡增加兩個矢量還是採用點積? – Beta
一個有用的思考方式可能是這樣的:平面的法線(三角形)和光線一起形成一個平面。在這個平面上,您可以檢索您熟悉的2D問題。所以,你可以找到這個二維空間,解決那裏的問題,然後轉換回來。這將在數學上等同於矢量代數公式(如@Beta指出的),這可能是最有效的(或至少在計算上是直接的)解決方法。 – jwimberley