Построить пирамиду Серпинского.
Увеличить или уменьшить уровень вложенности + и - соответственно.
Клавиша P - отрисовываем закрашенную или только ребра.
Алгоритм:
1) Берем произвольно заданную прямую и делим ее пополам.
2) Потом сгибаем ее так, чтобы полученный угол равнялся 90 градусам.
3) Для полученных отрезков выполняем пункты 1)-2) до тех пор, пока указанный счетчик не станет равен нулю.
4) Как только счетчик станет равен нулю, рекурсивно строим драконову кривую.
Хотелось бы объяснить использование OpenGL в Qt для вращения трехмерной фигуры.
В данном примере приведен измененный код из статьи "Введение в OpenGL на Qt/C++" для отрисовки разноцветного икосаэдра.
Цвета задаются рандомно, а сама отрисовка производится через встроенные функции отрисовки по массивам координат.
Программа демонстрирует вращение четырехугольной пирамиды в OpenGL.
glTranlsatef() производит перенос объекта, прибавляя к координатам его вершин значения своих параметров.
glRotatef() производит поворот объекта против часовой стрелки на угол angle (измеряется в градусах) вокруг вектора (x,y,z).
Программа демонстрирует построение множества Мандельброта при использовании OpenGL и языка C++. Множество строится при запуске программы.
Для наглядности и краткости кода был реализован класс комплексных числе Complex.
Данная программа демонстрирует Т-квадрат. При запуске программы выполняется построение.
Алгоритм:
На вход функции вырисовки drowtT подаются координаты центра квадрата, длина его стороны(в пикселях) и количество итераций;
Вычисляются координаты вершин квадрата и по ним вырисовывается квадрат;
Если количество итераций не равно 0, то запускаем для каждой вершины функцию drowT, уменьшая длину стороны в половину.
Данная программа демонстрирует кривую Леви. При запуске программы на форме строится Кривая Леви.
Алгоритм:
На вход функции построения drowLevi подаются координаты исходного отрезка и количество итераций;
Если количество итераций равно 0 - рисуется отрезок по входным координатам;
Иначе - находятся координаты точки излома и вызывается функция drowLevi для каждого образовавшегося отрезка.
В данном примере мы вращаем кватернион вокруг кватерниона, который вращается вокруг третьего кватерниона, который вращается вокруг четвертого кватерниона для того чтобы продемонстрировать простоту и элегантность сложных вращений через гиперкомплексные числа.
Реализована функция Quaternion rotate(double x, double y, вouble z, double i, double j, double k, float angle), которая принимает координаты вращаемой точки, координаты вектора, вокруг которого вращаем точку и угол. Она возвращает кватернион вида (0, x', y', z') с новыми координатми.
В классе Mandelbrot хранятся переменные вектора позиции и вращения.
Программа демонстрирует процесс движения моллекул в идеальном газе. Для выбора параметров откройте вкладку "Меню".