2013-03-13 40 views
1

進入C++我一直在研究如何讓兩個球體相互作用。我發現的很多東西都非常複雜,或者是實際的數學公式。是否還有更簡單的方法來創建一個函數來識別球體的任何一側何時與另一個球體接觸?我並沒有要求你做我的工作,但我真的很感謝一些乾淨的視覺,僞代碼或代碼片斷,這可以幫助我更好地理解。或者,也許有一些我沒有找到的鏈接?C++檢查兩個球體相交/ Collidiing

謝謝!

回答

0

這篇文章對兩個球體如何相互作用有很好的解釋Sphere - sphere collision detection -> reaction。請注意,您可能必須處理複雜的數學問題才能解決此問題。希望通過閱讀這些解釋,你可以更好地理解數學應該做什麼。我發現過去最好在鑽研數學之前試着想象並理解如何解決一般的問題。

+0

您已經給出明顯是3D問題的2D解決方案。我很想讓你失望,但我寧願讓你編輯你的文章。 – 2013-03-18 02:02:59

+0

對不起。沒有意識到OP在談論領域。 – bvogelzang 2013-03-18 18:16:17

1

檢查球體中心之間的距離是否小於它們的半徑之和。

class Sphere { 
public: 
    double centerX, centerY, centerZ, radius; 
    // .... 
}; 

double distanceBetween(const Sphere& a, const Sphere& b) { 
    return sqrt(pow(a.centerX - b.centerX, 2) + pow(a.centerY - b.centerY, 2) + pow(a.centerZ - b.centerZ, 2)); 
} 

bool areColliding(const Sphere& a, const Sphere& b) { 
    return distanceBetween(a, b) < (a.radius + b.radius); 
}