Сцена, хранящаяся в BSP-дереве, впоследствии рисуется с помощью подпрограммы, подобной той, псевдокод которой приводится в тематическом задании 13.2.
Тематическое задание 13.4. HSR с использованием сортировки по глубине Уровень сложности III.
Предположим, что подпрограмма визуализации трехмерной сцены (без HSR) уже доступна. Напишите приложение, которое осуществляет визуализацию сцены с использованием метода сортировки по глубине из раздела «Алгоритм сортировки по глубине» для удаления невидимых граней. Проверьте полученную программу на интересных сценах, состоящих из нескольких объектов, например из набора N случайных кубов, как это рассматривалось в тематическом задании 13.1.
Тематическое задание 13.5. Использование HSR-метода построчного сканирования Уровень сложности III.
Предположим, что подпрограмма визуализации трехмерной сцены (без HSR) уже доступна. Напишите приложение, которое осуществляет визуализацию сцены с использованием алгоритма построчного сканирования из раздела «HSR-метод построчного сканирования» для удаления невидимых граней. Проверьте полученную программу на интересных сценах, состоящих из нескольких объектов.
13.10. Дополнительная литература Тематическое задание 13.6. Рисование при помощи алгоритма Варнока Уровень сложности III.
Предположим, что подпрограмма визуализации трехмерной сцены (без HSR) уже доступна. Напишите приложение, которое осуществляет визуализацию сцены с использованием алгоритма Варнока для удаления невидимых граней. При этом используйте первое определение простой области: не более одной грани втянуто в область (то есть пересекается с ней, охватывает ее или содержит в себе). Затем разработайте необходимые подпрограммы, рассмотренные в разделе «Методы разбиения области»: isSimple_drawIt(), drawFaceO, isInvolvedO, regionSizeO, buildQuadrantsO, drawClosestFaceO. Проверьте полученную программу на интересных сценах, состоящих из нескольких объектов, таких как набор случайных кубов.
Обратите внимание, что после разбиения необходимо произвести тестирование подобластей-«по-томков», чтобы в дальнейшем рассматривать только те грани, которые втянуты в «родительскую» область. Любые грани, которые не пересекаются с родительской областью, заведомо не будут пересекаться и с ее подобластями. В дальнейшем мы обсудим, как исключить из дальнейшего рассмотрения те грани, которые не пересекаются с областью.