最近在做一個游戲需求中用到了和幾何計算有關的知識,需要去計算射線和一個平面的交點,計算方法在這里記錄一下。
首先定義一條射線:起始點p0和方向d,那么射線上任意一點p=p0 + td。
平面的定義則通過一個法向n和一個頂點來實現,對於平面上的所有點p,p·n = d,d是一個常數。
那么要計算它們之間的相交就不難了,若射線和平面相交,則必有:
(p0 + td)·n = d
p0·n + td·n = d
最終可得:
t=(d - p0·n)/(d·n)。
如果射線和平面互相平行,則d·n = 0,它們之間沒有交點。d的計算則通過找平面上的一個點p,取p·n = d來實現。