在图形学编程中,经常需要求玩家准心对准的物体。该问题可转化为求与玩家视线相交且离玩家最近的三角形面片所对应的物体。因此需要一种光线-三角形相交算法来求出视线是否与某三角形相交、若相交,距离又是多少。下面介绍一种简单的基于参数和矩阵求解的算法。
已知三角形的三个顶点 v0,v1,v2,可以给出三角形内点的参数方程:
h=v0+α(v1−v0)+β(v2−v0)
其中参数 α,β 满足下面的条件:
α≥0,β≥0,α+β≤1
令
e1=v1−v0e2=v2−v0
则可简记为:
h=v0+αe1+βe2
玩家从 p 点往 r 方向看去,与三角形所在平面的交点为 h 的参数方程:
h=p+tr
其中参数 t 满足:
t≥0
如图所示:
联立两个方程
v0+αe1+βe2=p+tr
移项
αe1+