Масштабирование фигуры

Задача

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

Решение

 

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

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.

 

Примечания: 

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

 

Тема

Графика и псевдографика

Уровень

Простые задачи

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.