簡體   English   中英

組合速度大於初速度

[英]combined velocity is larger than initial velocity

我正在用 Java 制作台球游戲。 我使用指南來解決沖突。 在測試過程中,我注意到碰撞后兩個碰撞池球之間的速度更大。 額外速度的數量似乎是 0%-50%。 直射約 0%,極寬射約 50%。 我假設組合速度將保持不變。 是我的代碼還是我對物理的理解是錯誤的?

private void solveCollision(PoolBall b1, PoolBall b2) {

    System.out.println(b1.getMagnitude() + b2.getMagnitude());

    // vector tangent to collision point
    float vTangX = b2.getY() - b1.getY();
    float vTangY = -(b2.getX() - b1.getX());

    // normalize tangent vector
    float mag = (float) (Math.sqrt((vTangX * vTangX) + (vTangY * vTangY)));
    vTangX /= mag;
    vTangY /= mag;

    // get new vector based on velocity of circle being collided with
    float NVX1 = b1.getVector().get(0) - b2.getVector().get(0);
    float NVY1 = b1.getVector().get(1) - b2.getVector().get(1);

    // dot product
    float dot = (NVX1 * vTangX) + (NVY1 * vTangY);

    // adjust length of tangent vector
    vTangX *= dot;
    vTangY *= dot;

    // velocity component perpendicular to tangent
    float vPerpX = NVX1 - vTangX;
    float vPerpY = NVY1 - vTangY;

    // apply vector to pool balls
    b1.setVector(b1.getVector().get(0) - vPerpX, b1.getVector().get(1) - vPerpY);
    b2.setVector(b2.getVector().get(0) + vPerpX, b2.getVector().get(1) + vPerpY);

    System.out.println(b1.getMagnitude() + b2.getMagnitude());

}

並非所有這些解釋都嚴格針對主題,我將假設最少的先見之明以適應潛在的未來用戶 - 不幸的是,有些人可能會因此發現它很迂腐。


速度不是一個守恆量,因此碰撞的速度大小和不一定等於碰撞的速度大小和。

這對於非彈性碰撞更直觀,特別是當您考慮小行星與地球的月球1碰撞等場景時,典型的撞擊速度約為每秒 10 - 20公里 如果在這種情況下標量速度是守恆的——即使在 45°(最有可能的)“寬”撞擊角下——月球的最終速度也足以將其從地球軌道上彈出。

所以很明顯,對於非彈性碰撞,標量速度不一定守恆。 彈性碰撞不太直觀。

正如您所指出的,這是因為存在一種情況,即完美彈性碰撞中的標量速度是守恆的(直接碰撞),而非彈性碰撞從不守恆速度2 這造成了不可接受的不一致。

為了糾正這個問題,我們必須將速度視為向量而不是標量。 考慮兩個球之間最簡單的彈性碰撞:一個球靜止,第二個球撞擊第一個“直線”(撞擊角為 90°)。 第二個球將靜止,第一個球將以等於第二個初始速度的速度離開碰撞。 速度是守恆的——前后速度的大小和是相等的——一切都很好。

然而,對於 90° 以外的撞擊角,情況並非如此,因為幅度總和未能將矢量分量抵消掉 舉例來說,你有一個球靜止不動,第二個球以 45° 撞擊它。 然后,兩個球將與第二個球的初始行進方向3成 45° 角離開碰撞。 然后,兩個球也將具有平行於初始運動方向的相同速度分量,以及相等但相反的垂直速度分量。 當您進行矢量和時,兩個垂直分量將抵消,兩個平行分量的和將恢復初始速度矢量。 然而,每個球的最終速度矢量的大小將大於第二個球的初始速度的大小 - 因為大小是通過平方值的總和計算的,因此不考慮相對的分量。

當然,最好的方法不是看速度,而是看動量——動量守恆控制着上面概述的行為,就動量而言,解釋非常簡單:它規定了在完全彈性碰撞中速度質心不能改變。


1更大的一個——因為地球最近捕獲了第二顆真正的衛星

2這實際上是非彈性碰撞定義的一部分。

3有關計算出發角的其他背景信息,請參見此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM