4.14. Напишите программу, которая будет формировать узор Серпинского следующим образом. Сначала строится белый треугольник. На каждом очередном шаге используются преобразования, формирующие три подобных треугольника поверх исходного, которые вычерчиваются черным цветом.
4.15. Пусть в исходном состоянии имеется куб, центр которого совмещен с началом координат, а ребра ориентированы вдоль осей системы координат. Какой вид имеет матрица поворота, которая придаст кубу симметричную ориентацию, как показано на рис. 4.59.
4.16. Для описания таких объектов, как трехмерные многоугольники, используются трехмерные вершины. По заданному множеству
вершин определите, является ли определенный ими много угольник плоским.
4.17. Три вершины определяют треугольник в том случае, если он1 не лежат на одной прямой (неколлинеарны). Разработайте тес коллинеарности трех точек.
4.18. Мы определили преобразование экземпляра как суперпозиции сдвига, поворота и масштабирования. Можно ли получить то' же самый объект, если применить преобразования этих типов 1 другом порядке?
4.19. Напишите программу, которая позволит ориентировать куб по командам от одной кнопки мыши, сдвигать по командам от второй кнопки, а растягивать-сжимать - по командам от третьей.
4.20. Заданы два непараллельных трехмерных вектора и и v. Как сформировать ортогональную систему координат, в которой вектор и будет одним из векторов базиса?
Объекты и геометрические преобразования
ГЛАВА
Визуализация
предыдущей главе мы рассмотрели одну часть модели синтезированной камеры - ме тодику описания трехмерных объектов и манипулирования ими. В этой главе будет расХшшУ смотрена другая часть - способы описания виртуальной камеры. В процессе обсуждения мы затронем и темы, тесно связанные с этими способами, в частники сопоставим классические методы визуализации с теми, которые используются в компьютерной графике.
Обсуждение условно делится на три части. Сначала мы обсудим, какие типы видов можно формировать в графической системе и почему недостаточно располагать видами только одного типа. Затем рассмотрим, какие средства предоставляет OpenGL в распоряжение прикладного программиста для формирования конкретного вида. Будет показано, что процесс визуализации распадается на две стадии. На первой стадии используется матрица вида, которая задает преобразование между мировым фреймом и фреймом камеры. Напомним, что модели объектов сцены представляются в мировом фрейме. Представление объектов во фрейме камеры позволяет на второй стадии использовать канонические процедуры визуализации. Вторая часть процесса имеет отношение к преобразованию проецирования. Прикладной программист, а значит, и пользователь могут выбирать тип проекции (параллельная или перспективная) и ту часть мирового пространства, которая преобразуется в изображение. По этим параметрам формируется матрица проецирования (или проективного преобразования), которая объединяется с матрицей вида. Весь процесс визуализации будет проиллюстрирован на примере с использованием соответствующих функций OpenGL. Третья часть обсуждения в этой главе - вывод матриц проецирования для наиболее распространенных параллельных и перспективных видов.