Фрактальна графіка Фрактальна графіка обраховується як векторна, але відрізняється тим, що жодних об'єктів у пам'яті комп'ютера не зберігається. Зображення будується за рівнянням(або за системою рівнянь), тому нічого, крім формули, зберігати не потрібно. Змінивши коефіцієнти у рівнянні, отримують зовсім іншу картину. Найпростішим фрактальним об'єктом є фрактальний трикутник. Фрактальними властивостями володіють багато об'єктів живої і неживої природи. Звичайна сніжинка при збільшенні виявляється фрактальним об'єктом. Фрактальні алгоритми лежать в основі росту кристалів і рослин. Властивість фрактальної графіки моделювати образи живої природи обчисленням часто використовують для автоматичної генерації незвичних ілюстрацій. Фрактал ( лат. Fractus – складений із фрагментів) – це зображення, якескладаеться із подібних між собою елементів. Побудова фрактального малюнка може відбуватися за деяким алгоритмом або шляхом автоматичної генерації зображень за до обчислень за певними формулами. Зміна в алгоритмах або значень коефіцієнтів у формулах приводить до модифікації зображення. Фрактальну графіку часто використовують для графічного представлення даних під час моделювання деяких процесів, для автоматичної генерації абстрактних зображень, у розважальних програмах. Як і кожна графіка чи програма фрактальна графіка має свої переваги та недоліки. Переваги фрактальної графіки 1) Малі обсяги даних. 2) Простота модифікації зображень. 3) Можливість деталізації зображення. Недоліки фрактальної графіки: 1) Абстрактність зображень. 2) Необхідність використання досить складних математичних понять і формул.
#include <iostream>
using namespace std;
int main()
{
int n; cout << "розмір квадратної матриці = ";
cin >> n;
int mt[n][n]; // оголошення матриці розмірністю n*m, де n = m = n
srand(time(NULL));
cout << "була: " << endl;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
mt[i][j]=rand()%21-10; // генерація випадкових чисел в матриці
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << " " << mt[i][j]; // вивід матриці
cout << endl;
}
cout << endl << "стала: " << endl;
for (int i = 0; i < n; i++) //індексація масивів у C++ завжди з 0, тому ДО n
{
int* temp=new int[n]; // видозмінити матрицю (двовимірний масив) можна за до одновимірного динамічного масиву temp[n] або змінної temp
temp[i] = mt[n-1][i]; // записати ("покласти") в масив temp "копію" останнього (n-1) рядка матриці
mt[n-1][i] = mt[i][0]; // останній (n-1) рядок матриці обернути на перший (нульовий) стовпець матриці
mt[i][0] = temp[i]; // перший (нульовий) стовпець обернути на «копію» останнього (n-1) рядка, яка міститься в допоміжному масиві temp (зчитати з temp)
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << " " << mt[i][j]; // вивід видозміненої матриці
cout << endl;
}
return 0; }