О сфера: glutWireSphereCGLdouble radius. GLint nSlices, GLint nStacks); О тор: glutWireTorus(GLdouble inRad, GLdouble outRad, GLint nSlices. GLint nStacks); О чайник: glutWireTeapot(GLdouble size).

Существуют также функции glutSolidCubeO, glutSolidSphereO и другие, которые мы будем использовать позднее. Форма тора задается с помощью внутреннего радиуса inRad и внешнего радиуса outRad. Сфера и тор аппроксимируются полигональными гранями, поэтому путем изменения параметров nSlices и nStacks можно устанавливать, сколько граней будет использовано в аппроксимации. Параметр nSlices - это число «долек» вокруг оси z, a nStacks - число «ломтиков» вдоль оси z, как если бы данная форма была стопкой из множества nStacks дисков.

Для визуализации четырех из Платоновых тел (пятым является куб, который уже был представлен) используются следующие функции: О тетраэдр: glutWireTetrahedronO; О октаэдр: glutWireOctahedronO; О додекаэдр: glutWireDodecahedronO; О икосаэдр: glutWireIcosahedron().

Все вышеприведенные формы имеют центр в начале координат. Кроме них, имеются еще следующие тела: О конус: glutWireCone(GLdouble baseRad, GLdouble height. GLint nSlices, GLint nStacks); О усеченный конус (конический цилиндр): gluCylinder(GLUquadricObj * qobj. GLdouble baseRad, GLdouble topRad. GLdouble height. GLint nSlices, GLint nStacks).

Оси конуса и усеченного конуса совпадают с осью z. Их основания находятся в плоскости z = 0 и простираются вдоль оси z до плоскости z = height. Радиусы конуса и усеченного конуса при z = 0 задаются переменной baseRad. Радиус усеченного конуса при z = height равен topRad.

В действительности усеченный конус является целым семейством форм, различающихся значением параметра topRad. При topRad - 1 сужение отсутствует, и мы имеем классический прямой круговой цилиндр (right circular cylinder). Если topRad = 0, то усеченный конус идентичен конусу.

Отметим, что рисование усеченного конуса в OpenGL требует некоторой дополнительной работы, поскольку он является частным случаем поверхности второго порядка, как мы увидим в главе 6. Для того чтобы нарисовать его, необходимо


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