[英]Simple way to resolve 2D elastic collision between circles
我需要最簡單的解決方案來解決圓之間的2D彈性碰撞,每個圓具有彼此相等的質量。
環境是Android畫布,其中Y軸朝下生長。 圓的邏輯表示是具有成功碰撞檢測功能的PlayerBall類。 PlayerBall具有以下字段:
圓心的x和y位置
圓運動的velX和velY速度矢量表示為兩個標量值,可以為正或負。
直徑 -圓的直徑
public static void resolveCollision(PlayerBall ballOne, PlayerBall ballTwo)
{
double collisionAngle = Math.atan2(ballTwo.y - ballOne.y, ballTwo.x - ballOne.x); // angle for ball one
// calculating new velocities between ballOne and ballTwo
...
// setting the new velocities for both balls
ballOne.setVelocity((float)ballOneVelX, (float)ballOneVelY);
ballTwo.setVelocity((float)ballTwoVelX, (float)ballwTwoVelY);
}
我期望球的速度根據本文中定義的公式而變化https://en.wikipedia.org/wiki/Elastic_collision#Two-Dimension_collision_with_two_moving_objects
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.