Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

torrvic, возможно, Вам нужно добавить -lGLU
Извините за тупой вопрос. У меня при сборке Вашего примера выходит ошибка: "undefined reference to gluLookAt". Не могу найти в какой библиотеке находится эта функция. У меня задано: -lGL -lglut ... Искал в /usr/lib таким образом: nm lib*so* | grep...
Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...

Счетчики и рейтинг

Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
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.zip152.95 кб