О Докажите, что длина каждого ребра шестиугольника радиуса R также равна R.
О Докажите, что центры соседних шестиугольников в столбце отстоят друг от друга по вертикали на R -л/з и что соседние столбцы отстоят друг от друга по горизонтали на 3R/2.
О Используя подпрограммы pushCTO, рорСТ и соответствующие преобразования для отслеживания начала каждой строки и каждого столбца, разработайте код, осуществляющий рисование шестиугольной мозаики, показанной на рисунке.
Преобразования объектов
5.6. Рисование трехмерных сцен с применением OpenGL
В главе 3 мы уже познакомились с рисованием двумерных объектов, разработав при этом простой класс Canvas. Этот класс поддерживает функции, которые устанавливают окно и порт просмотра и которые рисуют прямые линии с помощью функций moveToO и ИпеТоО. Помимо этого в данной главе мы добавили понятие текущего преобразования СТ и ввели функции, осуществляющие двумерные повороты, масштабирования и перемещения. Такие двумерные преобразования в действительности являются частными случаями трехмерных преобразований, а именно тех, которые игнорируют третье измерение.
В данном разделе мы рассмотрим, как трехмерные преобразования используются в программах, основанных на OpenGL. Основное ударение делается на преобразовании объектов для ориентирования и позиционирования их в трехмерной сцене. Неудивительно, что вся эта работа выполняется с помощью матриц и OpenGL поддерживает необходимые функции для построения нужных матриц. Кроме того, OpenGL поддерживает матричный стек, который дает возможность проделать преобразования над одним объектом и затем вернуться к предыдущему преобразованию и подготовить преобразование другого объекта.
Было бы неплохо создать программу, рисующую различные сцены с помощью набора трехмерных преобразований. Кроме того, экспериментирование с подобной программой дает вам дополнительную возможность увидеть, что делают различные трехмерные преобразования. OpenGL упрощает установку «камеры», которая делает «снимок» сцены из заданной точки. Подобная камера также создается с помощью матрицы, и в главе 7 мы будем подробно изучать, как это делается. Здесь же мы просто воспользуемся средствами OpenGL для установки подходящей камеры, при этом наше внимание будет сосредоточено на преобразовании объектов. Несмотря на то что мы используем программное средство до того, как разобрались в его операциях, выигрыш велик: вы сможете создавать впечатляющие изображения трехмерных сцен посредством лишь небольшого числа вызовов функций OpenGL.