Теперь рассмотрим, как посмотреть на этот объект со стороны положительной полуоси х. Для этого потребуется не только отодвинуться от объекта, но и повернуть камеру вокруг оси у, как показано на рис. 5.13. Сдвиг нужно выполнить после поворота на 90° вокруг оси у. В тексте программы вызовы соответствующих функций должны идти в обратном порядке, как на том акцентировалось ваше внимание в главе 4. Поэтому соответствующий фрагмент программы будет выглядеть следующим образом:

glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -d); glRotatef(-90.0, 0.0, 1.0, 0.0);

В терминах двух фреймов мировой фрейм сначала поворачивается относительно фрейма камеры, а затем фреймы отодвигаются друг от друга.

В некоторых примерах в главах 2 и 4 была использована устанавливаемая по умолчанию матрица проецирования, подробнее о ней мы поговорим в разделе 5.3. Сейчас же воспользуемся тем, что по умолчанию она формирует ортогональную проекцию, причем камера размещается в начале координат мирового фрейма, а ее ось проецирования направляется в сторону, противоположную оси z мирового фрейма. В примере с вращением куба (см. главу 4) мы поворачивали куб, чтобы увидеть нужную грань. Но как уже отмечалось, тот же эффект дает и поворот фрейма куба относительно фрейма камеры (такое же изображение можно получить, поворачивая камеру относительно куба).

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

Визуализация

Хотя нам еще предстоит отодвинуть камеру, предположим, что мы смотрим на куб откуда-то со стороны положительной полуоси г. Можно будет получить один из восьми изометрических видов (соответствующих восьми вершинам куба), повернув его сначала вокруг оси у, пока не увидим симметричные изображения двух граней (рис. 5.14,а). Очевидно, что для этого нужно повернуть куб на 45°. Второй поворот- вокруг оси х. Будем поворачивать куб вниз, пока не получим требуемый изометрический вид. Для этого потребуется повернуть его вокруг оси х на-35.26°. Вычислить значение второго угла можно следующим образом.


⇐ Предыдущая| |Следующая ⇒