Алгоритмы создания фрактальных изображений в языке программирования Turbo Pascal

Вид материалаЛекции

Содержание


Графические возможности языка Паскаль
Установка графического режима работы
InitGraph(var Driver, Mode:integer; Path:string)
Использование цветов
SetBkColor (Color: word)
SetBkColor (1); SetColor (14)
Rectangle(x1, y1, x2, y2: integer)
SetFillStyle(Pattern, Color: word)
Line(x1, y1, x2, y2: integer)
StAngle к конечному углу EndAngle
OutTextXY(x, y:integer; TextString:string)
Порядок выполнения работы
Контрольные вопросы
Подобный материал:
Блок 2. Алгоритмы создания фрактальных изображений в языке программирования Turbo Pascal.

Материалы для лекции:

Понятие фрактальной графики. Программные средства для работы с фрактальной графикой предназначены для автоматической генерации изображения путем математических расчетов. Фрактальная графика является вычисляемой, т.е. изображение строится по некоторым математическим уравнениям либо системам уравнений. В основе созданных таким образом фрактальных композиций лежат мелкие фрактальные объекты, объединенные в фигуры по принципу наследования. Способность фрактальной графики моделировать композиции вычислительным путем часто используют для автоматизации создания необычных иллюстраций, узоров, космических ландшафтов и т.д.

 ^ Графические возможности языка Паскаль

Язык программирования Паскаль 7.0 содержит обширный набор типов, констант и функций для управления графическим режимом работы экрана, объединенных в стандартный библиотечный модуль GRAPH. С помощью подпрограмм, входящих в данный модуль, можно создавать сложные графические изображения, основанные на использовании разнообразных геометрических фигур. При необходимости замкнутые фигуры могут быть закрашены различными цветами и стилями (образцами) закраски. Для вывода текстовых надписей на графический экран могут быть использованы четыре штриховых и один матричный шрифт.

Подпрограммы модуля GRAPH могут поддерживать различные типы аппаратных графических средств. Настройка на конкретные технические средства осуществляется с помощью специальных программ – драйверов, поставляемых вместе с данным модулем.

^ Установка графического режима работы

Переход в графический режим в среде Паскаль осуществляется с помощью входящей в модуль GRAPH процедуры InitGraph, служащей для инициализации графического экрана. Данная процедура имеет следующий формат:

^ InitGraph(var Driver, Mode:integer; Path:string),

где переменные Driver и Mode должны содержать тип графического драйвера и его режим работы. Допускается указать Driver=0 для автоматического определения данных параметров по результатам тестирования аппаратуры. Параметр Path определяет маршрут поиска файла графического адаптера.

Графические операторы языка Паскаль позволяют адресоваться к любому элементу (пикселю) графического окна и управлять светимостью этого элемента. Для указания пикселя используется следующая система координат: начало координат (0,0) располагается в левом верхнем углу экрана; горизонтальная координата Х увеличивается слева направо, вертикальная координата Y увеличивается сверху вниз. При стандартном графическом адаптере VGA (в режиме 640х480) правый нижний угол экрана имеет координаты (639, 479), а центр экрана - координаты (319, 239).

Для выхода из графического режима достаточно воспользоваться процедурой CloseGraph.

Пример 1

program pr1;

uses Graph; {Подключение графического модуля Graph}

var d, m: Integer;

begin

d:=0;

m:=0;

InitGraph(d, m,'d:\bp\bgi'); {Переход в графический режим. Строка d:\bp\bgi указывает путь размещения файла Graph.tpu для конкретного компьютера, на котором разрабатывалась данная программа}

circle(319, 239, 100); {Рисование круга радиуса 100 с центром в середине экрана}

readln; {Оператор ввода, используемый в данном случае для задержки изображения на экране вплоть до нажатия на клавишу Enter}

CloseGraph;  {Выход из графического режима}

end.

Приведенная выше в примере 1 программа позволяет нарисовать круг радиуса 100 с центром в точке (319, 239). Т.к. данная программа не использует цветовые возможности графического режима, то рисование будет осуществляться цветами по умолчанию – белый рисунок на черном фоне.

^ Использование цветов

Язык программирования Паскаль 7.0 поддерживает 16 основных цветов, обозначаемых соответственно номерами от 0 до 15 (см. таблицу 1).

  Таблица 1 Константы цвета

Константа цвета

Цвет

Константа цвета

Цвет

0 (Black)

Черный

8 (DarkGray)

Темносерый

1 (Blue)

Синий

9 (LightBlue)

Яркосиний

2 (Green)

Зеленый

10 (LightGreen)

Яркозеленый

3 (Cyan)

Голубой

11 (LightCyan)

Яркоголубой

4 (Red)

Красный

12 (LightRed)

Розовый

5 (Magenta)

Фиолетовый

13 (LightMagenta)

Малиновый

6 (Brown)

Коричневый

14 (Yellow)

Желтый

7 (LightGray)

Светлосерый

15 (White)

Белый

  Основными графическими операторами по работе с цветами являются процедуры модуля GRAPH под именами SetBkColor (служит для установки цвета фона) и SetColor (для установки цвета рисования).

Формат данных операторов следующий:

^ SetBkColor (Color: word);

SetColor (Color: word),

где переменная Color, имеющая целочисленный тип word, служит для указания требуемого номера цвета.

Например, операторы ^ SetBkColor (1); SetColor (14) позволяют установить режим рисования желтым цветом по синему фону.

 Создание графических объектов

В состав модуля GRAPH входит достаточно большое количество подпрограмм, служащих для вывода на экран разнообразных графических объектов. Основными процедурами данного типа являются:

^ Rectangle(x1, y1, x2, y2: integer) - служит для рисования прямоугольников, задаваемых координатами двух своих противоположных углов;

Bar(x1, y1, x2, y2: integer) - служит для рисования заштрихованных прямоугольников, используя при этом текущий стиль и цвет штриховки;

^ SetFillStyle(Pattern, Color: word) – устанавливает образец штриховки и ее цвет, где переменная Pattern обозначает номер шаблона штриховки (см. таблицу 2), а Color – номер цвета штриховки (см. таблицу 1);

Circle(x, y: integer; r: word) – рисует окружность радиуса r с центром в точке (x, y);

^ Line(x1, y1, x2, y2: integer) – рисует линию от точки (x1, y1) до точки (x2, y2);

PieSlice(x, y: integer; StAngle, EndAngle, r:word) – рисует и заштриховывает сектор окружности радиусом r с центром в (x, y) от начального угла ^ StAngle к конечному углу EndAngle. При этом используется текущий стиль и цвет штриховки (см. процедуру SetFillStyle);

PutPixel(x, y:integer; Color:word) – выводит на экран точку цвета Color с координатами (x, y);

^ OutTextXY(x, y:integer; TextString:string) – выводит техт TextString в заданное координатами (x, y) место экрана.

Таблица 2 Шаблоны штриховки

Номер

Стиль штриховки

Номер

Стиль штриховки

0

Нет штриховки

6

Наклонная влево

1

Сплошная (заливка)

7

В клетку по образцу +++

2

Горизонтальными линиями

8

В клетку по образцу ххх

3

Наклонная вправо

9

Штриховка в мелкую клетку

4

Наклонная вправо толстыми линиями

10

Редкими точками

5

Наклонная влево толстыми линиями

11

Частыми точками

 

^ Порядок выполнения работы
  1. Загрузите среду программирования Паскаль. Создайте с ее помощью фрактальную композицию, основанную на повторении пересекающихся окружностей некоторого радиуса. При построении композиции используйте исходные данные из приложения А в соответствии с вариантом, указанным преподавателем. Образец фрактальной композиции предложен на рисунке Б1.
  2. Создайте многоцветный вариант Вашей композиции, задавая цвет закрашивания отдельных элементов композиции в зависимости от номера шага цикла (см. рисунок Б2).
  3. Создайте двухцветный вариант данной композиции, основанный на чередовании светлого и темного цвета (см. рисунок Б3).

 ^ Контрольные вопросы

1)     Что понимают под фрактальной графикой?

2)     Что лежит в основе фрактальных композиций?

3)     Какими графическими возможностями обладает язык программирования Паскаль 7.0?

4)     В каком модуле языка Паскаль хранятся подпрограммы по работе с графикой? Как подключить его к основной программе?

5)     Как перейти в графический режим в среде Паскаль и как из него выйти?

6)     Как направлены оси координат в графическом режиме языка Паскаль? Где расположено начало координат?

7)     Пусть Ваш экран имеет стандартную разрешающую способность 640х480 ед. Какие координаты будет иметь при этом левый верхний угол экрана, левый нижний угол, правый верхний угол, правый нижний угол?

8)     Сколько основных цветов могут использоваться языком Паскаль 7.0? Приведите примеры обозначения цветов.

9)     Какие типы штриховки Вам известны?

10)Как на языке Паскаль установить режим рисования фиолетовым цветом по розовому фону?

11)Какие операторы языка Паскаль используются для рисования простейших геометрических фигур (прямоугольника, закрашенного прямоугольника, окружности). Назовите их формат.

12)С помощью каких известных Вам операторов языка Паскаль можно нарисовать треугольник? Приведите какой-либо пример.

13)Как вывести надпись в заданное место экрана с помощью операторов языка Паскаль?

Приложение А

Варианты исходных данных для выполнения задания,

где dx – расстояние между центрами окружностей по оси X,

dy– расстояние между центрами окружностей по оси Y,

R – радиус окружностей

  №

dx

dy

R

Цвет рисования

Цвет фона

1

50

60

70

Синий

Белый

2

60

50

65

Черный

Желтый

3

70

75

80

Фиолетовый

Яркоголубой

4

60

70

90

Черный

Розовый

5

50

40

55

Черный

Малиновый

6

60

70

80

Фиолетовый

Желтый

7

70

50

75

Коричневый

Белый

8

55

40

60

Черный

Светлосерый

9

60

50

70

Синий

Голубой

10

60

65

70

Коричневый

Желтый

11

65

70

80

Фиолетовый

Белый

12

40

50

60

Красный

Желтый

13

30

40

50

Зеленый

Белый

14

40

35

50

Фиолетовый

Яркоголубой

15

50

65

70

Синий

Розовый

  Отчет о проделанной работе должен содержать

-         название и цель работы;

-         номер своего варианта при выполнении работы;

-         текст программ;

-         рисунки с фрагментами всех трех вариантов Вашей фрактальной композиции;

-         ответы на контрольные вопросы