Программа рисующая фрактал-биоморф "Радиолярия", написанная на C# с использованием стандартной графической библиотеки
Программа рисующая Фрактал Паук, написанная на C# с использованием стандартной графической библиотеки
Итак, начнем реализовывать задачи, поставленные в статье. Я опишу только ключевые моменты, все остальное вы найдете в исходниках.
Я буду использовать графическую библиотеку SFML версии 2.3.2 и некоторые элементы библиотеки OpenGL (все необходимое уже включено в SFML).
Для моделирования частицы я создал класс Particle
#include <iostream> #include <SFML\Graphics.hpp> #include <math.h> #include <vector> #pragma once using namespace std; class Particle { private: vector <sf::Vector2f> forces; // Скорости, которые воздействуют на частицу
Задача: Нарисовать кривую Леви.
Алгоритм: Метод drawLevy принимает координаты начального отрезка и количество итераций n. Затем высчитываются точки излома и для них вызывается drawLevy с декрементом n и т.д.(пока n != 0). Если n == 0, то рисуется линия по текущими координатам (x1, y1, x2, y2).
Пример для шума перлина, кода довольно много, но он хорошо раскомментирован.
Весь шум перлина отделен в отдельный класс - можете использовать по своему усмотрению.
Запуск: выкидываете ехе-фаил в любое удобное место и кладете рядом SDL.dll, должно работать.
Интерфейс: Окно с сами шумом. Вводите 3 коэффициента через пробел и получаете отрисовку шума.
Управление: консоль
Перед нами стоит следующая задача:
Создать класс многоугольника и обеспечить его методом проверки попадания точки в этот многоугольник.
Программа рисует один многоугольник и реагирует на щелчок мыши. Если щелчок был произведен по многоугольнику, меняем его цвет.
Задача - построить фрактал Дракон Хартера-Хейтуэя.
Алгоритм - Берём произвольный отрезок. Делим его пополам и строим из получившихся отрезков прямой угол. Затем многократно повторяем итерацию(на это в влияет аргумент n функции drawDragon).
Подсчет площади многоугольника с помощью триангуляции.
Программа разбивает многоугольник на треугольники и подсчитывает площадь многоугольника как сумму треугольников. Площади самих треугольников вычисляются по формуле Герона.
Демонстрация аппроксимации β-сплайном.
Функция drawSpline(int[] points, Pen pen) принимает набор точек (х,y) и рисует по этому набору сплайн. Функция drawSpline(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, Pen pen) принимает 4 точки и используя функцию подсчета коэффициентов countSplineCoefficient(int index, int x1, int x2, int x3, int x4) и формулы
x(t) = ((a3t + a2)t + a1)t + a0, для 0 <= t <= 1
Демонстрация триангуляции многоугольника.
Программа производит триангуляцию заранее заданного против часовой стрелки многоугольника. Она использует класс Polygon для хранения и триангуляции многоугольника и Form1 для вывода его на экран.