我試圖設計一個具有連續碰撞檢測的2D物理引擎。對象存儲爲非旋轉線段列表。因此,我可以通過查找任意兩個對象之間每對線段之間的碰撞時間來檢測碰撞。兩條移動線段(或一條移動線段和一個點)的交集
我想找到兩個移動的線段以相同的方向移動的交點之間的交點的確切時間確切的,這證明是困難的。
我發現我可以通過查找線段上每個點與另一個線段(反之亦然)之間的碰撞時間來進一步簡化問題。這可能是計算效率低下的問題,因此兩條線段的一般解決方案將是理想的答案。我也可以忽略線條平行的情況(我想將線條/點與「無碰撞」共享相同的位置和速度)。
如果答案是「不可能」到正好找到這個交點時間,我會接受它作爲一個解決方案。任何有關這個問題的幫助將不勝感激。
編輯:根據維基百科的上一個Line segment文章,與端點A = (a_x, a_y)
和C = (c_x, c_y)
,爲線段的一般公式線段看起來是這樣的:
對於線 - 段 - 點相交,將代替
p_x + p_v * t
對於a_x
(左側o NLY,右側就是p_x
)p_y + p_v * t
爲a_y
(左側只,右側就是p_y
)q_x + q_v * t
爲c_x
(僅左側,右側就是q_x
)q_y + q_v * t
爲c_y
(左側只,右側就是q_y
)r_x + r_v * t
爲x
r_y + r_v * t
爲y
的線段PQ [(p_x, p_y), (q_x, q_y)]
,點R (r_x, r_y)
,在p_v
== q_v
的速度移動!= r_v
有解對於t?下面是完整的方程: