Показать сообщение отдельно
Старый 15.07.2013, 20:00   #51
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Олимпиада по программированию

Для удобства окружность в нулях, радиус - r
Перемещение точки:
x = x + cos(arc) * speed
y = y + sin(arc) * speed

если x^2 + y^2 > r^2, мы столкнулись с окружностью,
перпендикуляр к окружности = atan(y, x)
угол падения = перпендикуляр к окружности - arc
угол отражения = перпендикуляр к окружности - 180 + угол падения
arc = угол отражения
примерно так, конечно операции с углами должны правильно обрабатывать отрицательные углы, и углы превышающие 360 градусов
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (16.07.2013)