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

Вход на сайт

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

Построения
на плоскости (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
Статья по теме: 

Данная программа демонстрирует кривую Леви. При запуске программы на форме строится Кривая Леви.
Алгоритм:
На вход функции построения drowLevi подаются координаты исходного отрезка и количество итераций;
Если количество итераций равно 0 - рисуется отрезок по входным координатам;
Иначе - находятся координаты точки излома и вызывается функция drowLevi для каждого образовавшегося отрезка.

Код программы: 

#include <glut.h>
 
void drowLevy(int x1, int y1, int x2, int y2, int i)
{
    if(i == 0) {
        glColor3f(x1 * 0.01, x2 * 0.002, i * 0.03);
        glVertex2i(x1, y1); //координаты вырисовываемого 
        glVertex2i(x2, y2); //отрезка
    }
    else {
        int x3 = (x1 + x2) / 2 - (y2 - y1) / 2; //координаты
        int y3 = (y1 + y2) / 2 + (x2 - x1) / 2; //точки излома
        drowLevy(x1, y1, x3, y3, i - 1);
        drowLevy(x3, y3, x2, y2, i - 1);
    }
}
 
void reshape(int w, int h)
{   
    glClearColor(0.0, 0.0, 0.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_LINES);
        drowLevy(300, 400, 500, 400, 15); //вызов функции вырисовки
    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();
}

Прикрепленный файлРазмер
Curve_Levy.zip153.05 кб