Рис. 4.50. Находится ли точка 0 внутри полигона Р?
Тематическое задание 4.4. Отражения в комнате (двумерная трассировка луча)
Купить матрас ланс 190x70. Купим матрасы бу.
Уровень сложности И.
В данном тематическом задании используются некоторые идеи и инструменты, описанные в этой главе, для осуществления замечательной, но в то же время простой имитации. Эта имитация выполняет своего рода трассировку луча, причем для простоты иллюстрации в двумерном пространстве. Трехмерная трассировка луча подробно рассматривается в главе 14.
В этой модели прослеживается путь одного маленького шарика, когда он рикошетирует от различных стен внутри некоторой «комнаты». На рис. 4.51, а показано поперечное сечение выпуклой комнаты V/, имеющей шесть стен и содержащей три выпуклых «колонны». Шарик начинает свой путь из точки 5 и движется по прямой линии в направлении с до тех пор, пока не ударится о препятствие, после чего он «отражается» от этого барьера и движется в новом направлении, снова по прямой. Это движение продолжается вечно. На рис. 4.51, б показан пример пути в виде ломаной линии, которую описывает луч, представляющий этот шарик.
а . б Рис. 4.51. Эксперимент с двумерной трассировкой луча Для любого заданного начального положения луча 5 и его направления с трассировка его пути требует выполнения следующих двух операций.
О Нахождение первой стены «комнаты», о которую ударяется шарик.
О Нахождение нового направления, которое получит луч после отражения от этой первой стены.
Векторные инструменты для графики
Обе эти операции уже обсуждались в этой главе. Отметим, что при создании каждого нового луча его начальная точка всегда находится на какой-нибудь стене, в «точке соударения» с этой стеной.
Мы описываем комнату списком выпуклых полигонов"opengl1_285.html">⇐ Предыдущая| |Следующая ⇒