glBegin (GL_POINTS) ; glVertex* ( ) ;

glEnd ( ); И хотя термином vertex (вершина) в строгом смысле называют “угловую” точку многоугольника, точку пересечения сторон угла, точку пересечения эллипса с его главной осью или другие подобные точки геометрических фигур, функция glVertex в OpenGL описывает положение любой точки. Таким образом, для задания точек, прямых линий и многоугольников применяется одна функция, а для описания объектов, составляющих сцену, чаще всего используются прямоугольные участки.

Изображение трех точек, полученное с помощью функции д1Вед1п (БЬ_Р01ЫТЗ)

Рис. 3.3. Изображение трех точек, полученное с помощью функции д1Вед1п (БЬ_Р01ЫТЗ)

Координаты точек в OpenGL могут задаваться в двух, трех или четырех измерениях. Для того чтобы задать размерность пространства, в функции glVertex используются индексы 2, 3 или 4. Четырехмерное описание указывает на представление с помощью однородных координат, где однородный параметр h (четвертая координата) - это масштабный коэффициент для значений декартовых координат. Представление в виде однородных координат удобно при выражении операций преобразований в матричной форме, и они подробно рассмотрены в главе 5. Поскольку в OpenGL двухмерное пространство считается частным случаем трехмерного, любые координаты (х, у) эквивалентны (х, у, 0) при h = 1.

Далее нужно обозначить, какой тип данных используется для описания числовых значений координат. Это осуществляется с помощью второго индексного кода функции glVertex. Тип числовых данных обозначают следующие индексы: i (integer), s (short), f (fbat) и d (double). Наконец, значения координат в функции glVertex могут перечисляться в явном виде, или может использоваться единственный аргумент, который задает положения координат в виде массива. Если применяется описание координат в виде массива, нам нужно прибавить третий индекс: v (vector).

Ниже приведен пример вывода на экран трех точек, находящихся на одинаковом расстоянии друг от друга на двухмерном прямолинейном отрезке с тангенсом угла наклона, равным 2 (рис. 3.3). Координаты задаются в виде пар целых чисел.

glBegin (GL_POINTS); glVertex2i (50, 100); glVertex2i (75, 150); glVertex2i (100, 200); glEnd ( ); Как показано ниже, значения координат для вышеприведенных точек можно задать в виде массивов

int pointl [ ] =50, 100; int point2 [ ] = 75, 150; int point3 [ ] = 100, 200; и вызвать функции OpenGL для построения трех точек.

glBegin (GL_POINTS); glVertex2iv (pointl); glVertex2iv (point2); glVertex2iv (point3); glEnd ( );

A вот пример описания положений двух точек в трехмерной внешней системе координат. В этом случае координаты задаются в явном виде как значения с плавающей запятой.

glBegin (GL_POINTS);

glVertex3f (-78.05, 909.72, 14.60); glVertex3f (261.91, -5200.67, 188.33); glEnd ( ); Кроме того, для описания положений точек в пространствах различной размерности можно определить класс или структуру (struct) C+t Например, так.

class wcPt2D { public:

GLfloat x, у;

} ; С помощью этого определения класса можно задавать двухмерные координаты точек во внешней системе координат.

wcPt2D pointPos;

pointPos.x = 120.75; pointPos.у = 45.30; glBegin (GL_POINTS);


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