*/

glScalef (1.5, 2.0, 1.0); glutWireCube (1.0);

/* Масштабировать, транслировать и отобразить

* каркасный додекаэдр.

*/

glScalef (0.8, 0.5, 0.8); glTranslatef (-6.0, -5.0, 0.0); glutWireDodecahedron ( );

/* Транслировать и отобразить каркасный тетраэдр. */ glTranslatef (8.6, 8.6, 2.0); glutWireTetrahedron ( );

/* Транслировать и отобразить каркасный октаэдр. */ glTranslatef (-3.0, -1.0, 0.0); glutWireOctahedron ( );

/* Масштабировать, транслировать и отобразить

* каркасный икосаэдр.

*/

glScalef (0.8, 0.8, 1.0); glTranslatef (4.3, -2.0, 0.5); glutWirelcosahedron ( ); glFlush ( );

}

void winReshapeFcn (GLint newWidth, GLint newHeight) { glViewport (0, 0, newWidth, newHeight); glMatrixMode (GL_PROJECTION); glFrustum (-1.0, 1.0, -1.0, 1.0, 2.0, 20.0); glMatrixMode (GL_MODELVIEW); glClear (GL_COLOR_BUFFER_BIT);

}

void main (int arge, char** argv)

{

glutlnit (Sarge, argv);

glutlnitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutlnitWindowPosition (100, 100); glutlnitWindowSize (winWidth, winHeight); glutCreateWindow ("Каркасные многоугольники"); init ( );

glutDisplayFunc (displayWirePolyhedra); glutReshapeFunc (winReshapeFcn); glutMainLoop ( );

}

КРИВОЛИНЕЙНЫЕ ПОВЕРХНОСТИ

Уравнения объектов с криволинейными границами можно выразить в параметрической или непараметрической форме (необходимая информация дается в приложении А, где также сравниваются параметрические и непараметрические представления). В число различных объектов, часто полезных в графических приложениях, входят поверхности второго порядка (квадрики), суперквадрики, полиномиальные и показательные функции, сплайновые поверхности. Данные входные описания объектов обычно представляются в мозаичной форме, что позволяет аппроксимировать поверхности многоугольными сетками.

ПОВЕРХНОСТИ ВТОРОГО ПОРЯДКА

Одним из наиболее часто используемых является класс объектов, включающий поверхности второго порядка (квадрики), которые описываются уравнениями второго порядка (квадратными). Эти поверхности включают сферы, эллипсоиды, торы, параболоиды и гиперболоиды. Поверхности второго порядка, особенно сферы и эллипсоиды, часто присутствуют на графических сценах, и в графических пакетах обычно реализуются процедуры генерации этих поверхностей. Кроме того, поверхности второго порядка можно получить с помощью рациональных сплайнов.

СУГ1ЕРКВАДРИКИ

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

ФУНКЦИИ OpenGL ПОВЕРХНОСТЕЙ ВТОРОГО И ТРЕТЬЕГО ПОРЯДКА

Сферу и многие другие трехмерные объекты с поверхностями второго порядка можно вывести на экран, используя функции, включенные в наборы OpenGL Utility Toolkit (GLUT) и OpenGL Utility (GLU). Кроме того, GLUT содержит одну функцию для отображения формы чайника, определенного с помощью бикубических участков поверхности. Все функции GLUT, которые легко внедрить в программу-приложение, имеют две версии. Один вариант каждой функции отображает каркасную поверхность, а другой - представляет поверхность как визуализированный набор многоугольных участков закрашенных областей. С помощью функций GLUT можно отобразить сферу, конус, тор или чайник. Функции GLU поверхностей второго порядка несколько сложнее настроить, но они дают больше альтернатив - сферу, цилиндр, конический цилиндр, конус, плоское круговое кольцо (или шайбу) и участок кругового кольца (или диска).


⇐ вернуться назад | | далее ⇒