Есть бильярдный стол(без дырок), с произвольной стороны вылетает шарик, под произвольным углом, ударяясь о стенку отскакивает под углом в 90 градусов и так до следущей стенки.
Посмотри здесь:
Немного графики, Прыгающий шарикТам я делал программу, только не для случая отскока от стенки под углом 90 градусов, а для случая "угол падения = углу отражения"