Стороны этого квадрата имеют длину >/2 .
Полагая, что значение Э является глобальной переменной, можно вычертить этот квадрат с помощью следующей функции:
Рис. 3.21. Квадрат, вписанный в окружность единичного радиуса
3.9. Интерактивные программы анимации
void display() {
glClear();
glBegin(GL_POLYGON);
/* Преобразование градусов в радианы */
thetar = theta/((2*3.14159)/360.0 ) ;
glVertex2f(cos(thetar), sin(thetar));
glVertex2f(-sin(thetar), cos(thetar));
glVertex2f(-cos(thetar), -sin(thetar));
glVertex2f(sin(thetar), -cos(thetar)); glEnd();
}
Приведенная функция display() будет формировать изображение квадрата при любом заданном значении 8, но при этом предполагается, что значение 9 изменяется по ходу выполнения программы и в результате на экране появляется изображение вращающегося квадрата. Для этого нужно время от времени вызывать с помощью функции glutPostRedisplay( ), которая входит в библиотеку GLUT, функцию display ( ).
Теперь организуем приращение угла 9 на фиксированное значение в то время, когда программа не получает сообщения ни о каких других событиях (находится в состоянии "простоя"). Это выполняется с помощью функции обработки простоя, которая регистрируется функцией glutIdleFunc( ) из библиотеки GLUT"opengl5_151.html">⇐ Предыдущая| |Следующая ⇒