你的问题可以转化为一个线性规划问题,并且可以精确地解决。
首先,假设(p0,p1,p2,p3)是时刻t0的顶点,(q0,q1,q2,q3)是第一个四面体在时刻t1的顶点,则在4D时空中,它们填充以下4D闭合体积
V = { (r,t) | (r,t) = a0 (p0,t0) + … + a3 (p3,t0) + b0 (q0,t1) + … + b3 (q3,t1) }
这里a0...a3和b0...b3参数在区间[0,1]内,并且总和为1:
a0+a1+a2+a3+b0+b1+b2+b3=1
第二个四面体同样是一个凸多边形(在上述所有内容后面添加“ '”以定义该移动四面体的4D体积)。
现在,两个凸多边形的交集是一个凸多边形。 第一次发生这种情况将满足以下线性规划问题:
如果(p0,p1,p2,p3)移动到(q0,q1,q2,q3)
并且(p0',p1',p2',p3')移动到(q0',q1',q2',q3')
则第一次相交发生在点/时间(r,t):
最小化t0 *(a0 + a1 + a2 + a3)+ t1 *(b0 + b1 + b2 + b3),满足以下条件
0 <= ak <=1, 0<=bk <=1, 0 <= ak’ <=1, 0<=bk’ <=1, k=0..4
a0*(p0,t0) + … + a3*(p3,t0) + b0*(q0,t1) + … + b3*(q3,t1)
= a0’*(p0’,t0) + … + a3’*(p3’,t0) + b0’*(q0’,t1) + … + b3’*(q3’,t1)
最后实际上是4个方程,每个(r,t)维度一个。
这总共是16个值ak、bk、ak'和bk'的20个线性约束条件。
如果有解,则
(r,t)= a0*(p0,t0) + … + a3*(p3,t0) + b0*(q0,t1) + … + b3*(q3,t1)
这是第一个交点。否则它们不相交。