Если вы работаете с радианами, вы должны (всегда) выражать их в пи, просто делите на пи. Облегчите работу и поймите.
-0.65 rad = -0.207*Pi rad
-2.5 rad = -0.796*Pi rad
Полный круг - 2 * Пи. Нормаль для горизонтальной поверхности равна 0,5 * Пи (или -0,5 * Пи).
normal = 0.5*Pi
angle of incidence = i + Pi - 0.5*Pi //EDIT: +Pi, need to invert the direction
angle of reflection = 0.5*Pi - angle of incidence
См. Отражение в Википедии для изображения и некоторого объяснения. Это дает эту формулу для горизонтальной стены:
r = 0.5*Pi - (i + Pi - 0.5*Pi)
r = 2*Pi - i
r = -i //subtract 2*Pi
Например
i = -0.207*Pi //gives
r = 0.207*Pi //for a horizontal wall
Аналогично по вертикали стена:
r = 0 - (i + Pi - 0)
r = -Pi - i
РЕДАКТИРОВАТЬ Я понял, что это не правильно. Чтобы формула работала, i
должен указывать точно в противоположном направлении. Исправлено, надеюсь, теперь это правильно. Если у меня будет время, я добавлю изображение, объясняющее ошибку и решение.