Малюнок 4).
Малюнок 4 - Приклад каркасного ландшафту.
. 4 Ландшафт заповнений
У цьому режимі ландшафт малюється як набір трикутників, при цьому координати окремих вершин TTriple за допомогою перспективного перетворення перераховуються в екранні пікселі TPixel, а потім вийшов трикутник малюється за допомогою функції PolyLine або Polygon, з відсіканням невидимих ??ліній методом «грубої сили». А саме DrawTriangle () спочатку малює задні трикутники, щоб передні трикутники малювалися пізніше і закривали їх. При вихідному виклику DrawTriangle () цій процедурі передається трикутник, розташований «вершиною вниз» - вершина A розташована спереду, в нижній частині вікна, а вершини B і С - ззаду, ближче до верхньої частини вікна (дивися малюнок 5.1.). Отже, фрагмент
DrawTriangle (Canvas, CA, BC, C, Plys, True); (Canvas, AB, B, BC, Plys, True); (Canvas, BC, CA, AB, Plys, False) ; (Canvas, A, AB, CA, Plys, True);
спочатку малює лівий субтреугольнік, а потім - правий. Орієнтація цих «зовнішніх» субтреугольніков збігається з орієнтацією трикутника ABC, а порядок перерахування параметрів в рекурсивних викликах DrawTriangle () гарантує, що нова точка A буде розташована спереду, а точки B і C - ззаду. Третій рядок виклику малює «внутрішній» субтреугольнік, який візуально знаходиться перед другим (правим верхнім) трикутником. Внутрішній субтреугольнік завжди перевернуть по відношенню до свого зовнішнього трикутнику, тому при виклику DrawTriangle () він розташовується «вершиною вгору». Порядок перерахування параметрів гарантує, що при такому виклику вершина A залишається ззаду, а B і C - спереду, в нижній частині екрана. Четвертий виклик DrawTriangle () малює останній, передній субтреугольнік.
Малюнок 5.1.- Порядок малювання і орієнтація трикутників.
Приклад даного ландшафту (малюнок 5.2.).
Малюнок 5.2.- Приклад заповненого ландшафту.
. 5 Ландшафт світлотінь
У цьому режимі ландшафт малюється як набір трикутників, при цьому координати окремих вершин TTriple за допомогою простого перспективного перетворення перераховуються в екранні пікселі TPixel, а потім вийшов трикутник малюється за допомогою функції PolyLine або Polygon. У свою чергу колір кожного трикутника в ньому залежить від кута, під яким дана грань розташована по відношенню до «сонця». Трикутники, розташовані перпендикулярно променям, виглядають світліше тих, що розташовані під кутом. Приклад даного ландшафту (малюнок 6.).
Малюнок 6. - Приклад ландшафту світлотінь.
2. ОПИС ПРОГРАМНОЇ ОДИНИЦІ
2.1 Загальні відомості
Програмна одиниця являє собою програму, яка має назву FracLandscapes.exe.
Програма написана на мові Delphi в середовищі розробки Delphi 10.
Програмне забезпечення, необхідне для функціонування: операційна система Windows XP/7.
2.2 Функціональне призначення
Програма може використовуватися для генерації берегової лінії і гір на основі фракталів.
2.3 Опис логічної структури
Програма складається з п'яти модулів: MAIN.PAS, DISPLAY.PAS, DATABASE.PAS, OPTIONS.PAS, GLOBAL.PAS. Модулі та їх призначення наведені в таблиці 1.
Таблиця 1.
Ім'я модуляФункціі, які виполняетMAINГлавний модуль, який відповідає за виклик процедур генерації та зміни ландшафту, а також тут описані всі процедури взаємодії користувача і програми через клавіатуру. DISPLAYМодуль для відображення ландшафту в поточному вікні і режимі з поточними параметрамі.DATABASEМодуль для зберігання рядів вершин. OPTIONSМодуль зберігає в собі форми налаштувань ландшафта.GLOBALМодуль визначальний систему двовимірних логічних адрес TTriple і TVertex в «трикутному» масиві.
Модуль MAIN.PAS складається з процедур і функцій:
1. procedure FileNew (Sender: TObject) - процедура генерує новий ландшафт.
2. procedure FileOpen (Sender: TObject) - процедура відкриває раніше створений ландшафт.
3. procedure FileSaveAs (Sender: TObject) - процедура зберігає ландшафт.
. procedure FilePrint (Sender: TObject) - процедура виводить на друк ландшафт.
. procedure FilePrintSetup (Sender: TObject) - процедура викликає настройку друку.
. procedure FileExit (Sender: TObject) - процедура виходу з програми.