2013-02-06 64 views
1

我正在做一個2D球到牆碰撞/彈跳動畫程序。我設法對球進行碰撞,並將球對準直線壁碰撞(兩者都是粗魯的)。球從曲面反彈

我的問題是,我如何工作的碰撞球從曲線表面反彈?例如一個球被圈入圈中(圓圈就是牆)。

乾杯

p.s.我正在使用c編程語言

+0

圓圈很容易。 –

回答

1

恕我直言,當一個球被困在一個圓形牆內時,由於牆與球之間的接觸點可以忽略不計,球的反射將像牆的正常情況一樣被控制。唯一的變化是反射的平面在球和牆之間的接觸點處是相切的。所以,在不同的碰撞點,切線的角度將會不同,這將決定球的速度角度。

我們可以通過將曲面看作一個半徑等於曲面曲率的巨大球體來處理凸面曲面。所以,我們只是計算兩個球之間的碰撞。當然,在這種情況下,我們必須考慮表面的質量是無限的,並從彈性碰撞方程導出方程。

2

基本原則始終是:

  • 查找出來,如果發生碰撞
  • 找出碰撞
  • 的切線對待碰撞與線碰撞

在圓圈碰撞的情況下:

  • r1是一個圓(在3D中,球)的半徑
  • r2是其他圓的半徑
  • d是它們的中心
  • 如果d>r1+r2的距離,圓圈是完全外側的每個其他
  • 如果r1>r2+d,第二圓是完全內的第一個
  • 如果r2>r1+d,第一圈是完全最後一個
  • OT內herise,圓圈重疊:
    • 的切線(在圖3D中,切平面)垂直於連接兩個中心
    • 如果第一圈是不可移動的,讓切平面相切於所述第一圓(線爲獲得最佳結果)
    • 否則,切平面位置的最佳選擇取決於兩個圓的質量(選擇保存質心的位置)
    • 2d中的圓從未獲得角動量從摩擦除外摩擦