Изображения других примитивов GLU второго порядка формируются с использованием той же базовой последовательности команд. Чтобы получить изображения конуса, цилиндра или конического цилиндра, вместо функции gluSphere вызывается функция

gluCylinder (quadricName, rBase, rTop, height, nLongitudes, nLatitudes); Основание этого объекта лежит в плоскости ху (z = 0), а ось проходит по оси л. Радиус основания этой поверхности второго порядка задается в параметре rBase, а радиус вершины поверхности - в параметре гТор. Если гТор = 0.0, получаем конус; если rTop = rBase, получаем цилиндр. В противном случае отображается конический цилиндр. Параметру height присваивается значение (число двойной точности) высоты, и поверхность делится на несколько равномерно расположенных вертикальных и горизонтальных линий, как определяется целыми значениями - параметрами nLongitudes и nLatitudes.

Плоское круговое кольцо или сплошной диск на плоскости ху (z = 0) с центром в начале внешней системы координат выводится на экран с помощью команды

gluDisk (ringName, rlnner, rOuter, nRadii, nRings); Внутренний и внешний радиусы задаются в параметрах rlnner и rOuter (значения двойной точности). Если rlnner = 0, диск сплошной. В противном случае он отображается с концентрическим отверстием в центре. Поверхность диска делится на набор граней, которые определяются целыми параметрами nRadii и nRings, задающими число радиальных сегментов, используемых в мозаичном представлении, и число концентрических окружностей соответственно. Ориентация кольца определяется по отношению к оси z, причем передняя часть кольца смотрит в направлении +z, а задняя - в направлении - z.

Сегмент кругового кольца можно задать с помощью следующей функции GLU.

gluPartialDisk (ringName, rlnner, rOuter, nRadii, nRings, startAngle, sweepAngle); Параметр двойной точности startAngle определяет угловое расстояние в градусах на плоскости ху, отсчитываемое по часовой стрелке от положительного направления оси у. Аналогично параметр sweepAngle задает угловое расстояние в градусах от положения startAngle. В результате отображается сегмент плоского кругового диска от положения startAngle до startAngle + sweepAngle. Например, если startAngle = 0.0 и sweepAngle = 90.0, отображается сегмент диска, лежащий в первом квадранте плоскости ху.

Отметим, что для любой поверхности GLU второго порядка можно выделить область памяти, а для удаления поверхности используется команда

gluDeleteQuadric (quadricName); Кроме того, можно определить направление любой поверхности второго порядка, используя функцию ориентации:

gluQuadricOrientation (quadricName, normalVectorDirection); Параметру normalVectorDirection присваивается либо значение GLU_ OUTSIDE, либо GLU_INSIDE, чтобы указать направление векторов нормали к поверхности, где “outside” обозначает направление передней грани, a “inside” - направление задней грани. По умолчанию значение равно GLU_OUTSIDE. Для плоского кругового кольца направление передней грани по умолчанию совпадает с положительным направлением оси г (передняя грань находится “над” диском). Альтернативой служит генерация векторов нормали к поверхности.


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