Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Использование повторяющихся изображений для создания орнаментов

Задача:

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

Алгоритм решения задачи:

Повторяющиеся элементы изображения в сумме представляют собой орнамент. Используя правила переноса, можно создавать как простые, так и достаточно сложные орнаменты.

Количество повторений базовой фигуры определяется переменной цикла, для которой задаются начальное и конечное значения, а также шаг (значение сдвига по оси 0X и/или по оси 0Y).

Если перенос базовой фигуры осуществляется в одном направлении (например, по оси 0X), то достаточно использовать одну циклическую конструкцию. Переменной цикла может служить координата x или y, которая изменяется от начального значения до конечного с заданным шагом (обычно равным ширине или высоте базовой фигуры).

Если перенос базовой фигуры производится по обеим осям (по горизонтали и вертикали), то используется два цикла, один из которых вложен в другой. Например, внутренний цикл прорисовывает каждую строку (изменяется только координата x), а внешний осуществляет переход на новую строку (изменяется координата y).

Программа на языке Паскаль:

uses graph;

var

g,h:integer;

x,y:integer;

begin g := detect;

initgraph(g,h,'');

randomize;

y := 0;

repeat

x := 0;

repeat

setcolor(10);

moveto(x,y+50);lineto(x+30,y);lineto(x+30,y+50);

setcolor(random(10)+6);

circle(x+30,y+50,20);

x := x + 60;

until x > 800;

y := y + 100;

until y > 600;

readln

end.

Перенос и анимация геометрических фигур

Задача:

Описать на языке программирования Pascal с помощью модуля graph алгоритм переноса и анимации геометрических фигур.

Описание переменных:

x, y – координаты точки.

Алгоритм решения задачи:

Точка на плоскости задается координатами x1, y1. При переносе ее положение определяется новыми координатами x2, y2, где

x2 = x1 + dx

y2 = y1 + dy

Так как графический объект представляет собой множество точек, то его можно переносить, применяя уравнение переноса к каждой точке.

Алгоритм переноса

  1. Установить цвет.

  2. Нарисовать фигуру.

  3. Подождать определенный промежуток времени.

  4. Зарисовать фигуру цветом фона экрана.

  5. Изменить координаты на dx и dy.

  6. Установить цвет.

  7. Нарисовать фигуру.

Используя правила переноса, можно моделировать движение объекта на экране. Для этого необходимо сначала определить направления движения: по горизонтали (для координаты x) и/или по вертикали (для координаты y). Для организации движения используется циклическая конструкция, зависящая от выбранного шага (сдвига).

Алгоритм движения по горизонтали

  1. Задать начальное значение переменной x – значение сдвига по оси.

  2. Пока x меньше конечного значения, выполнять следующую последовательность действий.

  1. Установить цвет.

  2. Нарисовать фигуру.

  3. Выполнить задержку.

  4. Зарисовать фигуру цветом фона экрана.

  5. Изменить значение x на величину сдвига.

Программа на языке Паскаль:

uses graph,crt;

var g,h:integer; x,y:integer;

begin

g := detect;

initgraph(g,h,'');

setcolor(10);

x:=100;

y:=200;

moveto(x,y); lineto(x+300,y); lineto(x+150,y-150); lineto(x,y);

delay(2000);

setcolor(0);

moveto(x,y); lineto(x+300,y); lineto(x+150,y-150); lineto(x,y);

setcolor(10);

x:=x+200;

y:=y+150;

moveto(x,y); lineto(x+300,y); lineto(x+150,y-150); lineto(x,y);

delay(1000);

x := 0;

while x < 300 do begin

setcolor(12);

rectangle(0+x,400,300+x,450);

delay(50);

setcolor(0);

rectangle(0+x,400,300+x,450);

x := x + 2

end;

setcolor(12);

rectangle(0+x,400,300+x,450);

readln

end.

Примечания:

В основе изменения графической информации лежат три основных преобразования: перенос, поворот и масштабирование. Эти три преобразования позволяют создавать статические и динамические геометрические изображения. При этом при построении графического изображения на экране монитора необходимо помнить, что система координат для графического режима отличается от обычной декартовой системы координат: ось 0Y направлена вниз, ось 0X - вправо, так что начало координат находится в левом верхнем углу экрана.