我一直陷入遊戲/模擬解決方案中,以便在時間運行時找到距離,而這不是我正在尋找的。計算兩個圓圈之間的碰撞時間 - 物理
我正在尋找一個O(1)公式來計算(0或1或2)時鐘時間(s),其中兩個圓圈完全相互爲r1 + r2距離。負面的時間是可能的。有可能兩個圓圈不會相撞,並且它們可能沒有交叉點(例如,當兩輛汽車在相反方向上行駛過於接近道路中間時彼此「剪輯」),這會弄亂我所有的mx + b解決方案。
從技術上講,單點碰撞應該是可能的。
我大約有100行代碼深,我確信必須有更好的方法,我甚至不確定我的測試用例是否正確。我的初始設置是:
dist(x1+dx1*t, y1+dy1*t, x2+dx2*t, y2+dy2*t) == r1+r2
通過假設在任何時間t的距離可以用畢達哥拉斯來計算,我想知道在兩個時間點中,從中心的距離正好是半徑之和。我解答了a,b和c並應用了二次公式,並且我相信如果我假設他們是幻象物體,這會給我第一次碰撞和碰撞的最後時刻,我可以假設在每一刻之間,它們都是重疊的。
我工作的前提是2個對象不可能在t0重疊,這意味着「卡在對方內」的無限衝突是不可能的。我也過濾出來,並使用特殊處理,當斜率爲0或無限,這是工作。
我試着計算的距離,當對象1在交點時,它距離對象2的距離,同樣當o2在交點時,但這不起作用,因爲它有可能發生碰撞時他們不在他們的交叉點。
我在遇到斜率相等但幅度不同的問題。
是否有一個簡單的物理/數學公式呢?
編程語言並不重要,僞代碼會很好,或者沒有複雜符號的任何數學公式(我不是數學/物理學的人)......但沒有更高的順序(我認爲python可能已經有碰撞(p1,p2)方法)
對象是否具有恆定的速度?如果是這樣,你應該簡單地能夠解決_t_。什麼不起作用? – pingul