2013-12-21 146 views
2

我最近開始玩帆布後,看到它是多麼容易。我的第一個項目就是在它移動時保持一個圓圈。我做了幾件涉及圈子運動的事情,現在...確定兩個圓相交的點和角度。

我目前正在努力,當他們擊中時,彼此彈跳兩圈。你可以在這裏看到這個例子:http://jsfiddle.net/shawn31313/QQMgm/7/

但是,我想使用更多的現實世界物理。此刻,當這些圈子彼此碰撞時,他們只是顛倒了路徑。

如這裏所示:

// Dont be confused, this is just the Distance Formula 
    // We compare the distance of the two circles centers to the sum of the radii of the two 
    // circles. This is because we want to check when they hit each other on the surface 
    // and not the center. 
    var distance = Math.sqrt(Math.pow(c1.x - c2.x, 2) + Math.pow(c1.y - c2.y, 2)); 
    var r1  = c1.rad; 
    var r2  = c2.rad; 
    if (distance < r1 + r2) { 
     // Change the slope of both circle 
     // I would like to figure out a more effecience way of bouncing the circles back 
     // However, I have no idea how to determine the angle the ball was struck, 
     // and with that information bounce it off at that angle 
     c1.xi = -c1.xi; // path is reversed 
     c1.yi = -c1.yi; 
     c2.xi = -c1.xi; 
     c2.yi = -c1.yi; 
    } 

然而,我想圓在由點和相交的角度確定相反的方向去。

我只是在9年級,不知道這樣的公式是怎麼看的。但我知道這是可能的,因爲這種物理現象出現在很多遊戲中。一個例子是一個8球遊戲。當球彼此碰撞時,他們會根據球彼此撞擊的方式在球桌上移動。

我會很感激關於如何做到這一點的任何提示,或者如果我應該等到我對物理和數學有更深入的瞭解。

+0

如果圓圈具有相同的質量和速度,那麼速度只是交換。但是如果速度不同,事情會變得更加複雜。 – Teepeemm

+0

@Teepeemm感謝您的評論。但是,如果交叉的角度是重要的? – Shawn31313

+0

我不這麼認爲。在Pixou之後,我們可以旋轉一切(至少在我們的腦海中),使得質心向右移動。由於質量和速度匹配,這意味着速度的垂直分量完全相反。然後當圓圈碰撞時,就好像它們從水平牆壁反彈出來一樣,所以水平速度不會改變,垂直速度也不會改變。但這正是來自另一個圈子的速度。不加旋轉的一切,你回到你開始的參考框架。 – Teepeemm

回答

2

太糟糕了,我們不能畫出一個非常簡單的方案。 至於物理學的問題,你知道,總動量是守恆的,看到 http://en.wikipedia.org/wiki/Momentum

有一個很好的例證,在這裏http://en.wikipedia.org/wiki/Elastic_collision#Two-_and_three-dimensional 公式可以簡化公式,如果兩個物體具有相同的權重。

所以現在讓我們考慮一下參考座標系,其中c2是固定的並以(0,0)爲中心。在此參考 C1速度將是:

c1.xfi=c1.xi-c2.xi 
c1.yfi=c1.yi-c2.yi 

現在你有一個碰撞時,兩者之間的距離爲半徑的總和。考慮兩個圓的切平面。

您現在必須將c1的速度分解爲一個保守的切線分量和一個垂直(在c1和c2之間的線之後),將其轉移到c2。

然後你需要回到你的原始參考框架。

(對不起,我沒有給你確切的公式,但他們對我提供的鏈接)

0

如果我這樣做我自己,我會實現使用Newtons law of restitution運動。基本上,這是一個係數,它涉及撞擊前/撞擊後2個粒子的接近和分離速度,它的值取決於粒子的材料屬性。

您的分析基本上等同於確定影響點,然後將進近速度分解爲平行且垂直於影響點處圓的中心線的分量。

粒子的動量守恆垂直於中心線(所以在這個方向上的速度保持不變的碰撞),恢復原理適用於平行於中心線的速度。因此,如果您將恢復係數(必須介於0和1之間)固定爲您選擇的某個值,則可以使用此法計算碰撞後沿着粒子中心線的分離速度,使用方法的值速度。

如果你的粒子都是相同的質量和半徑,那麼計算變得更簡單。您可以通過將係數設置爲1來模擬彈性碰撞(這表示粒子的分離速度與接近速度相同),這可能是最容易開始的地方。通過改變這個值,碰撞後你會看到粒子之間的不同行爲。

對不起,你不能在公式中寫下所有這些,但這不是真的適合它的地方。在英國生活我不知道「9年級」是什麼,所以我無法評估上述情況是否過於現在的教育水平。在英國,這種類型的問題通常會在A級數學教育水平上得到涵蓋。

希望雖然它會給你一個術語和主題的指示,你可以教你自己/研究,以實現你的目標。

+0

9年級大約14歲。 9年級數學是從預代數到代數2或幾何或三角函數的任何東西。 – Teepeemm

+0

@Teepeemm哦,那麼所有這些可能都有點過分。 – mathematician1975