
Среда программирования:
Visual Studio 2010
Статья по теме:
Данная программа демонстрирует Т-квадрат. При запуске программы выполняется построение.
Алгоритм:
На вход функции вырисовки drowtT подаются координаты центра квадрата, длина его стороны(в пикселях) и количество итераций;
Вычисляются координаты вершин квадрата и по ним вырисовывается квадрат;
Если количество итераций не равно 0, то запускаем для каждой вершины функцию drowT, уменьшая длину стороны в половину.
Код программы:
#include <glut.h> void drowT(int x, int y, int l, int it) { int X1 = x - l / 2; //координаты вершин int X2 = x + l / 2; int Y1 = y - l / 2; int Y2 = y + l / 2; glColor3f(0.7 / it, 0.7 / it, 0.7); glVertex2i(X1, Y1); glVertex2i(X1, Y2); glVertex2i(X2, Y2); glVertex2i(X2, Y1); if(it != 0){ drowT(X1, Y1, l / 2, it - 1); //вызов рекурсии для каждой из вершин drowT(X1, Y2, l / 2, it - 1); //квадрата drowT(X2, Y2, l / 2, it - 1); drowT(X2, Y1, l / 2, it - 1); } } void reshape(int w, int h) { glClearColor(1.0, 1.0, 1.0, 0.0); glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, w, 0, h); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); drowT(400, 400, 400, 10); //вызов функции вырисовки glEnd(); glutSwapBuffers(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(800, 800); glutCreateWindow("Levy"); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); }
Прикрепленный файл | Размер |
---|---|
T-quard.zip | 152.95 кб |