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

4.Графика и псевдографика Масштабирование фигуры

Задача:

Изменить размер геометрической фигуры.

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

x1, y1 – координаты верхнего левого угла прямоугольника;

x2, y2 – координаты нижнего правого угла прямоугольника;

a, b – коэффициенты масштабирования.

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

Геометрический объект можно масштабировать, т.е. увеличивать или уменьшать по осям координат. Масштабирование может производиться относительно разных точек пространства. Например, относительно начала координат или относительно центра объекта.

При изменении размера фигуры используются коэффициенты масштабирования. Если коэффициент больше единицы, то объект увеличивается. Если коэффициент принадлежит диапазону от 0 до 1, то объект будет уменьшен.

Новые координаты X и Y определяются соотношением

X = kx * x;

Y = ky * y,

где kx и ky – коэффициенты.

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

uses graph,crt;

var

g,h,i:integer;

x1,y1,x2,y2:integer;

a,b:real;

begin

g := detect;

initgraph(g,h,'');

setcolor(10);

x1:= 100;

y1:= 100;

x2:= 200;

y2:= 150;

rectangle(x1,y1,x2,y2);

a:= 1.1;

b:= 0.9;

for i:= 1 to 5 do begin

delay(1000);

setcolor(0);

rectangle(x1,y1,x2,y2);

x2:= round(x2*a);

y2:= round(y2*a);

setcolor(10);

rectangle(x1,y1,x2,y2);

end;

for i:= 1 to 5 do begin

delay(1000);

setcolor(0);

rectangle(x1,y1,x2,y2);

x2:= round(x2*b);

y2:= round(y2*b);

setcolor(10);

rectangle(x1,y1,x2,y2);

end;

readln

end.

Примечания:

Т.к. координаты верхнего левого угла не меняются, то прямоугольник увеличивается относительно именно этой точки.

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

Задача:

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

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

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

Количество повторений базовой фигуры определяется переменной цикла, для которой задаются начальное и конечное значения, а также шаг (значение сдвига по оси 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.