ВСТУП
Метою даної курсової роботи є освоєння теми «Фрактали» і подальша реалізація програми генерації ландшафту на основі фракталів за допомогою мови Delphi.
Саме поняття фрактал виникло відносно недавно років 15-20 тому. У зв'язку з необхідністю генерації хмар, гір, берегових ліній, рослинності. Стандартні геометричні фігури: коло, квадрат, прямокутник, трикутник вже не могли справлятися зі зростаючими потребами в деталізації і швидкості генерації.
Термін «фрактал» був введений Бенуа Мандельброт в 1975 році і отримав широку популярність з виходом в 1977 році його книги «Фрактальна геометрія природи».
Фрактали знаходять все більше і більше застосування в науці. Основна причина цього полягає в тому, що вони описують реальний світ іноді навіть краще, ніж традиційна фізика або математика. Прикладами їх використання служать: комп'ютерні системи (стиснення даних, генерація рослинності, ландшафту, хмар), телекомунікація (фрактальні форми антен), фізика поверхонь (завдання кривизни поверхонь) і багато інших.
1. ТЕОРЕТИЧНА ЧАСТИНА
фрактал ландшафт програма
1.1 Поняття фрактала
Фрактал (лат. fractus - подрібнений, зламаний, розбитий) - геометрична фігура, що володіє властивістю самоподібності, тобто складена з декількох частин, кожна з яких подібна до всієї фігури цілком. Він володіє нетривіальною структурою на всіх масштабах.
. 2 Принцип побудови
Фрактальное зображення створюється застосуванням деякої геометричної операції до простої фігурі і подальшим багаторазовим застосуванням тієї ж операції до отриманого результату. У цій програмі використовується алгоритм побудови, схожий на серветку Серпінського (Малюнок 1).
Малюнок 1. - Серветка Серпінського.
Цей фрактал описав в 1915 році польський математик Вацлав Серпінський. Щоб його отримати, потрібно взяти (рівносторонній) трикутник з начинкою, провести в ньому середні лінії і викинути центральний з чотирьох утворилися маленьких трикутників. Далі ці ж дії потрібно повторити з кожним із решти трьох трикутників, і т. Д.
Властивості серветки Серпінського:
1.Фрактальная розмірність log23? 1,584962 .... Трикутник Серпінського складається з трьох копій самого себе, кожна в два рази менше. Взаємне розташування їх таке, що якщо зменшити клітинки сітки в два рази, то число квадратиків, що перетинаються з фракталом, потроїться. Тобто N (д/2)=3N (д). Якщо спочатку розмір клітин був 1, а з фракталом перетиналося N0 з них (N (1)=N0), то N (1/2)=3N0, N (1/4)=32N0, ..., N (1/ 2k)=3kN0. Звідси виходить, що N (д) пропорційно, і за визначенням фрактальної розмірності вона дорівнює якраз log23.
Трикутник Серпінського має нульову площу
Однак щоб згенерувати ландшафт, потрібно змінити алгоритм Серпінського. А саме, привласнити випадкові висоти трьом вершин рівностороннього трикутника, а потім «зігнути» кожне ребро, піднімаючи або опускаючи його середину на випадкову величину. Поєднуючи лініями середини трьох сторін - вихідний трикутник розділиться на чотири трикутники (Малюнок 2). Тепер застосовуються операції вигину і ділення до кожного з одержані трикутників (в цьому головна відмінність від алгоритму Серпінського), і виходить щось схоже на реальний ландшафт.
Малюнок 2 - Розподіл трикутника.
В результаті виконання цих операцій виходить поверхня, що сильно нагадує ландшафт, але також потрібно стежити за тим, щоб грані трикутників, що мають кілька загальних граней, вигиналися на однакову величину. Інакше вийдуть як би групи трикутників по чотири штуки з несопрікасающіхся гранями. Також в програмі є «рівень моря»: будь трикутник, що повністю знаходиться над рівнем моря, малюється нормально, а будь трикутник, повністю занурений у воду, малюється синім кольором на рівні моря. Якщо трикутник перетинає рівень моря, програма интерполирует точки перетину, після чого окремо малює надводну і підводний частини. Після компіляції ви побачите ландшафт типу (малюнок 3).
Малюнок 3 - Приклад ландшафту.
. 3 Ландшафт каркасний
У цьому режимі ландшафт малюється як набір трикутників, при цьому координати окремих вершин TTriple за допомогою перетворення перераховуються в екранні пікселі TPixel, а потім вийшов трикутник малюється за допомогою функції PolyLine або Polygon, без відсікання невидимих ??ліній. У цей режимі малюються контури трикутників: «земля» - зеленим кольором, а «вода» - синім. Приклад даного ландшафту (...