Есть 2D шар, с координатами - x, y; скоростью движения - speed и углом, под которым он двигается - angle.
Нужен алгоритм, чтобы при движении
1. шар отскакивал от установленных рамок и
2. шар отскакивал от другого шара?
Сделал так, чтобы при столкновении в край экрана шар отлетал в противоположную сторону:
if(x>0 && y>0 && y<screenHeight && x<screenWidth)
{
x+=dt * speed*cosf(angle * math::PI / 180 );
y+=dt * speed*sinf(angle * math::PI / 180);
if((x<0) || (y<0) || (x>screenWidth) || (y>screenHeight))
{
angle+=180;
if(angle >360)
angle-=360;
}
}
Также все шары одинаковые по размеру.