![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
Пишу трассировщик лучей.
Есть ядро, есть хороший математический аппарат, но возникла совершенно неожиданная и ужасно раздражающая проблема. Нужно посчитать угол отражённого луча... Думал - фигня, за пять минут решу. Ан нет! Забыл, что углы бывают отрицательные. Начал рассматривать все случаи и понял, что дело принимает нехороший оборот. Чтобы всё отражалось без глюков надо учитывать восемь случаев: зеркало имеет положительный угол, отрицательный, и четыре варианта для луча (выше зеркала, ниже его и для каждого угол положительный, или отрицательный)! Хуже всего, что надо смотреть расположение точки относительно отрезка. А это – векторное произведение! Два умножения и разница. Короче, плохо. Что делать, подскажете, а? Примечания: 1. Зеркало задано отрезком (на картинке зелёное). Его угол измеряется от -90 градусов до 90. Причина этого - сортированость вершин по X. 2. Угол луч измеряется от -180 градусов до 180. Обычный atan2. |
![]() |
Часовой пояс GMT +4, время: 22:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| ray tracing , оптика , углы |
|
|