iinclude <GL/glut.h>
/* Оператор включения файла <glut.h> зависит от размещения файлов библиотек на конкретном компьютере */
/* Включение файла glut.h автоматически включает в программу gl.h и glu.h */
void myinit() {
/* Атрибуты */
/* Цвет фона - белый */ glClearColor(1.0, 1.0, 1.0, 1.0);
/* Цвет переднего плана - красный */ glColor3f(1.0, 0.0, 0.0);
/* Установка параметров отображения */ /* Окно 500 х 500 */
/* Начало экранных координат в левом нижнем углу */
Приложение А. Демонстрационные программы
glMatrixMode(GL_PR0JECTION); glLoadIdentity();
gluOrtho2D(0.0, 500.0, 0.0, 500.0); glMatrixMode(GL_MODELVIEW);
}
/* --......------.................*/
void display()
{
/* Определение типа данных, представляющего в программе */ /* точку двухмерного пространства */
typedef GLfloat point2[2];
/* Треугольник */
point2 vertices[3]={{0.0,0.0},
{250.0,500.0},
{500.0,0.0}};
int і, j, k;
int rand(); /* Стандартный генератор случайных чисел */ point2 р ={75.0,50.0}; /* Произвольно выбранная исходная */
/* точка внутри треугольника */
glClear(GL_COLOR_BUFFER_BIT); /* Очистить окно */
/* Вычислить и вывести на экран 5000 точек узора */
гог( к=0; к<5000; к++) {
j=rand()%3; /* Выбрать случайно одну из вершин */
/* Вычислить точку на полпути между выбранной */ /* вершиной и прежней точкой */
р[0] = (р[0]+уеПд.се8[Л[0])/2.0; р[1] = (р[1]+уегисев[Л[1])/2.0;
/* Вычертить новую точку */
д1Ведл.п(С1,_РОШГ8); д1УеПех2г>(р); д1Епс1();
}
дШиэпО; /* Очистить буферы */
}
А. 1. Двухмерный узор Серпинского
/*-------------------------------*/
void main(int arge, char** argv) {
/* Стандартная процедура инициализации библиотеки GLUT */ glutlnit(&argc,argv);
/* Дублируются */
/* установки по умолчанию. */
/* Эти операторы можно опустить. */ glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500,500); /* Окно 500 х 500 пикселей */ glutInitWindowPosition(0,0); /* Начало координат */
glutCreateWindow("Sierpinski Gasket"); /* Заголовок окна */ /* Регистрация функции отображения. */ /* Функция будет вызвана при открытии окна. */