Находится ли точка 0 внутри полигона Р?

Рис. 4.50. Находится ли точка 0 внутри полигона Р?

Тематическое задание 4.4. Отражения в комнате (двумерная трассировка луча)

Уровень сложности И.

В данном тематическом задании используются некоторые идеи и инструменты, описанные в этой главе, для осуществления замечательной, но в то же время простой имитации. Эта имитация выполняет своего рода трассировку луча, причем для простоты иллюстрации в двумерном пространстве. Трехмерная трассировка луча подробно рассматривается в главе 14.

В этой модели прослеживается путь одного маленького шарика, когда он рикошетирует от различных стен внутри некоторой «комнаты». На рис. 4.51, а показано поперечное сечение выпуклой комнаты V/, имеющей шесть стен и содержащей три выпуклых «колонны». Шарик начинает свой путь из точки 5 и движется по прямой линии в направлении с до тех пор, пока не ударится о препятствие, после чего он «отражается» от этого барьера и движется в новом направлении, снова по прямой. Это движение продолжается вечно. На рис. 4.51, б показан пример пути в виде ломаной линии, которую описывает луч, представляющий этот шарик.

а . б Рис. 4.51. Эксперимент с двумерной трассировкой луча Для любого заданного начального положения луча 5 и его направления с трассировка его пути требует выполнения следующих двух операций.

О Нахождение первой стены «комнаты», о которую ударяется шарик.

О Нахождение нового направления, которое получит луч после отражения от этой первой стены.

Векторные инструменты для графики

Обе эти операции уже обсуждались в этой главе. Отметим, что при создании каждого нового луча его начальная точка всегда находится на какой-нибудь стене, в «точке соударения» с этой стеной.

Мы описываем комнату списком выпуклых полигонов"opengl1_285.html">⇐ Предыдущая| |Следующая ⇒