Недавно я просто читал книгу XNA 4.0 Game Developmeny by Example. В одной из глав этот код написан для отражения (отражения) объектов после обнаружения столкновения:
private void BounceAsteroids(Sprite asteroid1, Sprite asteroid2)
{
Vector2 cOfMass = (asteroid1.Velocity + asteroid2.Velocity) / 2;
Vector2 normal1 = asteroid2.Center - asteroid1.Center;
normal1.Normalize();
Vector2 normal2 = asteroid1.Center - asteroid2.Center;
normal2.Normalize();
asteroid1.Velocity -= cOfMass;
asteroid1.Velocity = Vector2.Reflect(asteroid1.Velocity, normal1);
asteroid1.Velocity += cOfMass;
asteroid2.Velocity -= cOfMass;
asteroid2.Velocity = Vector2.Reflect(asteroid2.Velocity, normal2);
asteroid2.Velocity += cOfMass;
}
Может кто-нибудь объяснить мне этот код с помощью некоторой диаграммы или примера, который легко визуализировать. Я не могу визуализировать этот код. Если кто-нибудь знает какую-нибудь книгу, где я могу изучить этот тип физики, полезный для программирования игр, то я также буду очень благодарен.