|
发表于 2013-6-5 14:27:48
|
显示全部楼层
设三角形三个顶点为V0,V1,V2,射线为O+Dt,则三角形与射线可组成方程
O + Dt = V0 + (V1 – V0)u + (V2 – V0)v
其中u, v, t 为未知数,设E1 = V1 – V0, E2 = V2 – V0, B = O – V0,则
B = E1u + E2v – Dt
于是有一个三元一次方程组,其解为
det = | E1, E2, -D | = dot( -D, cross( E1, E2 ) ) = dot( E2, cross( -D, E1 ) ) = dot( E1, cross( E2, -D ) )
det(E1) = | B, E2, -D | = dot( -D, cross( B, E2 ) ) = dot( E2, cross( -D, B ) ) = dot( B, cross( E2, -D ) )
det(E2) = | E1, B, -D | = dot( -D, cross( E1, B ) ) = dot( B, cross( -D, E1 ) ) = dot( E1, cross( B, -D ) )
det(-D) = | E1, E2, B | = dot( B, cross( E1, E2 ) ) = dot( E2, cross( B, E1 ) ) = dot( E1, cross( E2, B ) )
u = det(E1) / det
v = det(E2) / det
t = det(-D) / det
如果 det != 0 && u >= 0 && u <= det && v >= 0 && u+v <= det,那么相交点则在三角形内部 |
|