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

Задача

Описать на языке программирования 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 - вправо, так что начало координат находится в левом верхнем углу экрана.

 

Тема

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

Уровень

Комбинированные задачи

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

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