- Главная
- Информатика
- ГРАФИКА_анимация_LAZARUS_Мартынюк

Содержание
- 2. ПРЕОБРАЗОВАНИЕ ИЗОБРАЖЕНИЙ Все основные изменения рисунков можно выполнить с помощью трех базовых операций: переноса изображения с
- 3. ПЕРЕМЕЩЕНИЕ x,y x1,y1 dx dy x1=x+dx y1=y+dy dx и dy задают скорости перемещения точки dx>0 -
- 4. МАСШТАБИРОВАНИЕ xm,ym x,y Необходимо задать: 1. коэффициенты масштабирования kx и ky. 2. координаты точки, относительно которой
- 5. ВРАЩЕНИЕ x,y x1,y1 xv,yv Необходимо задать: 1. Угловую скорость вращения dfi (положительное направление поворота против часовой
- 6. ФОРМИРОВАНИЕ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ При создании движущихся изображений используются рассмотренные геометрические преобразования: перемещение, масштабирование и поворот. Принцип
- 7. Пример движения пропеллера итреугольника h h/2 4 1 3 unit Unit2; {$mode objfpc}{$H+} interface uses Classes,
- 9. Перемещение пропеллера var dfi,fi, k :real; pr,prn:tmas; xv, yv,xm,ym, xc,yc,h, kol : Integer; dx, dy: Integer;
- 10. Масштабирование пропеллера procedure TForm1.Button2Click(Sender: TObject); //Масштабирование begin xc:=form1.ClientWidth div 4; yc:=form1.ClientHeight div 4; h:=yc; // xc:=(form1.ClientWidth
- 11. Вращение пропеллера procedure TForm1.Button3Click(Sender: TObject); //Вращение begin xc:=form1.ClientWidth div 4; yc:=form1.ClientHeight div 2-20; h:=yc div 2;
- 12. Сложное движение пропеллера procedure TForm1.Button4Click(Sender: TObject); // Сложное begin xc:=form1.ClientWidth div 4; yc:=form1.ClientHeight div 4; h:=yc
- 14. Скачать презентацию
Слайд 2ПРЕОБРАЗОВАНИЕ ИЗОБРАЖЕНИЙ
Все основные изменения рисунков можно выполнить с помощью трех базовых операций:
переноса
ПРЕОБРАЗОВАНИЕ ИЗОБРАЖЕНИЙ
Все основные изменения рисунков можно выполнить с помощью трех базовых операций:
переноса

увеличения или уменьшения размеров отображаемого рисунка (масштабирования);
изменения ориентации рисунка (вращения).
Слайд 3ПЕРЕМЕЩЕНИЕ
x,y
x1,y1
dx
dy
x1=x+dx
y1=y+dy
dx и dy задают скорости перемещения точки
dx>0 - перемещение точки по горизонтали
ПЕРЕМЕЩЕНИЕ
x,y
x1,y1
dx
dy
x1=x+dx
y1=y+dy
dx и dy задают скорости перемещения точки
dx>0 - перемещение точки по горизонтали

dx<0 - по горизонтали влево
dy>0 - перемещение по вертикали вниз
dy<0 - по вертикали вверх
При написании программы не надо вводить дополнительные переменные x1 и y1.
x=x+dx
y=y+dy
Слайд 4 МАСШТАБИРОВАНИЕ
xm,ym
x,y
Необходимо задать:
1. коэффициенты масштабирования kx и ky.
2. координаты точки, относительно которой
МАСШТАБИРОВАНИЕ
xm,ym
x,y
Необходимо задать:
1. коэффициенты масштабирования kx и ky.
2. координаты точки, относительно которой

Масштабирование может быть:
однородным (коэффициенты масштабирования по горизонтали и вертикали одинаковы и пропорции объекта сохраняются)
неоднородным (коэффициенты масштабирования неодинаковы по горизонтали и вертикали и пропорции объекта не сохраняются)
Координаты точки (Х,Y) после масштабирования рисунка определяются по формулам:
x=xm*(1-kx)+kx*x
y=ym*(1-ky)+ky*y
При KX>1 и KY>1 рисунок увеличивается в размерах и удаляется от центра масштабирования;
при KX<1 и KY<1 рисунок уменьшается в размерах и приближается к центру масштабирования
Слайд 5ВРАЩЕНИЕ
x,y
x1,y1
xv,yv
Необходимо задать:
1. Угловую скорость вращения dfi (положительное направление поворота против часовой стрелки,
ВРАЩЕНИЕ
x,y
x1,y1
xv,yv
Необходимо задать:
1. Угловую скорость вращения dfi (положительное направление поворота против часовой стрелки,

2. координаты точки, относительно которой производится поворот xv и yv (центр вращения).
dfi
Координаты точки (x1,y1) после поворота рисунка определяются по формулам:
x1=xv+(x-xv)*cos(dfi)+(y-yv)*sin(dfi)
y1=yv+(y-yv)*cos(dfi)-(x-xv)*sin(dfi)
Убрать x1 и y1 просто так нельзя, так как в первой формуле X перевычисляется. А во второй формуле надо использовать старое значение x. Кроме этого, при многократном перевычислении координат при округлении ошибка будет накапливаться, и рисунок будет искажаться. Поэтому надо сохранить координаты начального положения рисунка, и вычислять угол, на который повернут рисунок от начального положения.
fi=fi+dfi
x=xv+(xn-xv)*cos(fi)+(yn-yv)*sin(fi)
y=yv+(yn-yv)*cos(fi)-(xn-xv)*sin(fi)
Слайд 6ФОРМИРОВАНИЕ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ
При создании движущихся изображений используются рассмотренные геометрические преобразования: перемещение, масштабирование
ФОРМИРОВАНИЕ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ
При создании движущихся изображений используются рассмотренные геометрические преобразования: перемещение, масштабирование

Все программы, позволяющие воспроизводить движущееся изображение, имеют следующую особенность. Поскольку человеческий глаз обладает определенной инерционностью восприятия, то нельзя нарисовать изображение, затем сразу же стереть его и нарисовать новое изображение. Перед стиранием изображения необходимо предусмотреть задержку. Интервал времени, в течение которого высвечивается изображение, должен быть больше, чем интервал времени, в течение которого изображение отсутствует.
Элемент управления Timer
Движение моделируется с помощью невизуального компонента Timer.
Он применяется для повторения выполнения заданных алгоритмов через определенные интервалы времени.
Основные свойства:
Interval - определяет интервал времени, через который Timer должен «включаться» и выполнять заложенный алгоритм. Чем меньше Interval, тем быстрее будет двигаться фигура.
Enabled – включает Timer (если Enabled = False, Timer выключен).
Слайд 7Пример движения пропеллера итреугольника
h
h/2
4
1
3
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,forms, Graphics;
type tmas=array[1..4] of tpoint;
Пример движения пропеллера итреугольника
h
h/2
4
1
3
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,forms, Graphics;
type tmas=array[1..4] of tpoint;

procedure ris(pr:tmas;fff:tform);
procedure ristr(tr:tmas1;fff:tform);
procedure fon(fff:tform);
implementation
procedure ris(pr:tmas;fff:tform);
begin
fff.Canvas.Pen.Color:=clred;
fff.Canvas.Brush.Color:=clblue;
fff.Canvas.Polygon(pr);
end;
procedure ristr(tr:tmas1;fff:tform);
begin
fff.Canvas.Pen.Color:=clred;
fff.Canvas.Brush.Color:=clyellow;
fff.Canvas.Polygon(tr);
end;
//************************************************
procedure fon(fff:tform);
begin
fff.Canvas.Pen.Color:=clblack;
fff.Canvas.Brush.Color:=15000000;
fff.Canvas.Rectangle(0,0,fff.ClientWidth,fff.ClientHeight);
fff.Canvas.Brush.Color:=clgreen;
fff.Canvas.Rectangle(0,fff.ClientHeight div 2,fff.ClientWidth,fff.ClientHeight);
end;
end.
Слайд 9Перемещение пропеллера
var
dfi,fi, k :real;
pr,prn:tmas;
xv, yv,xm,ym, xc,yc,h, kol :
Перемещение пропеллера
var
dfi,fi, k :real;
pr,prn:tmas;
xv, yv,xm,ym, xc,yc,h, kol :

dx, dy: Integer;
tr,trn:tmas1;
procedure TForm1.Button1Click(Sender: TObject); //Перемещение
begin
xc:=form1.ClientWidth div 4;
yc:=form1.ClientHeight div 4;
h:=yc div 2;
pr[1].X:= xc - h div 2; pr[1].Y:= yc - h div 4;
pr[2].X:= xc + h div 2 ; pr[2].y:= yc + h div 4;
pr[3].X:= xc + h div 2 ; pr[3].Y:= yc - h div 4;
pr[4].X:= xc - h div 2; pr[4].Y:= yc + h div 4;
ris(pr,form1);
dx:= 2;
dy:= 2;
Timer1.Enabled:= True;
end;
procedure TForm1.Timer1Timer(Sender: TObject); //Перемещение
var i:integer;
begin
form1.Refresh;
for i:=1 to 4 do
begin
pr[i].x:=pr[i].x+dx;
pr[i].y:=pr[i].y+dy;
end;
ris(pr,form1);
if (pr[4].y>form1.ClientHeight)or(pr[1].y<0) then dy:=-dy;
if (pr[2].x>form1.ClientWidth)or(pr[1].x<0) then dx:=-dx;
end;
Слайд 10Масштабирование пропеллера
procedure TForm1.Button2Click(Sender: TObject); //Масштабирование
begin
xc:=form1.ClientWidth div 4;
yc:=form1.ClientHeight div 4;
h:=yc;
Масштабирование пропеллера
procedure TForm1.Button2Click(Sender: TObject); //Масштабирование
begin
xc:=form1.ClientWidth div 4;
yc:=form1.ClientHeight div 4;
h:=yc;

//yc:=(form1.ClientHeight div 4)*3;
pr[1].X:= xc - h div 2; pr[1].Y:= yc - h div 4;
pr[2].X:= xc + h div 2 ; pr[2].y:= yc + h div 4;
pr[3].X:= xc + h div 2 ; pr[3].Y:= yc - h div 4;
pr[4].X:= xc - h div 2; pr[4].Y:= yc + h div 4;
ris(pr,form1);
xm:=form1.ClientWidth;
ym:=form1.ClientHeight;
k:=0.98;
//k:=1.02;
Timer2.Enabled:= True;
end;
procedure TForm1.Timer2Timer(Sender: TObject); //Масштабирование
var i:integer;
begin
form1.Refresh;
for i:=1 to 4 do
begin
pr[i].x:=round(k*pr[i].x+(1-k)*xm);
pr[i].y:=round(k*pr[i].y+(1-k)*ym);
end;
ris(pr,form1);
end;
Слайд 11Вращение пропеллера
procedure TForm1.Button3Click(Sender: TObject); //Вращение
begin
xc:=form1.ClientWidth div 4;
yc:=form1.ClientHeight div 2-20;
h:=yc
Вращение пропеллера
procedure TForm1.Button3Click(Sender: TObject); //Вращение
begin
xc:=form1.ClientWidth div 4;
yc:=form1.ClientHeight div 2-20;
h:=yc

pr[1].X:= xc - h div 2; pr[1].Y:= yc - h div 4;
pr[2].X:= xc + h div 2 ; pr[2].y:= yc + h div 4;
pr[3].X:= xc + h div 2 ; pr[3].Y:= yc - h div 4;
pr[4].X:= xc - h div 2; pr[4].Y:= yc + h div 4;
prn:=pr;
ris(pr,form1);
dfi:= -PI / 18;
fi:=0;
kol:= 0;
xv:= 200;
yv:= 200;
Timer3.Enabled:= True;
end;
procedure TForm1.Timer3Timer(Sender: TObject); // Вращение
var i:integer;
begin
fon(form1);
fi:=fi+dfi;
for i:=1 to 4 do
begin
pr[i].x:=round(xv+(prn[i].x-xv)*cos(fi)+(prn[i].y-yv)*sin(fi));
pr[i].y:=round(yv+(prn[i].y-yv)*cos(fi)-(prn[i].x-xv)*sin(fi));
end;
ris(pr,form1);
kol:=kol+1;
if (kol mod 18)=0 then dfi:=-dfi;
end;
Слайд 12Сложное движение пропеллера
procedure TForm1.Button4Click(Sender: TObject); // Сложное
begin
xc:=form1.ClientWidth div 4;
yc:=form1.ClientHeight div
Сложное движение пропеллера
procedure TForm1.Button4Click(Sender: TObject); // Сложное
begin
xc:=form1.ClientWidth div 4;
yc:=form1.ClientHeight div

h:=yc div 2;
pr[1].X:= xc - h div 2; pr[1].Y:= yc - h div 4;
pr[2].X:= xc + h div 2 ; pr[2].y:= yc + h div 4;
pr[3].X:= xc + h div 2 ; pr[3].Y:= yc - h div 4;
pr[4].X:= xc - h div 2; pr[4].Y:= yc + h div 4;
prn:=pr;
ris(pr,form1);
dx:= 2;
dy:= 2;
dfi:= -PI / 18;
fi:=0;
xv:=xc;
yv:=yc;
//xv:= pr[2].X;
//yv:= pr[2].Y;
// xv:= 200;
// yv:= 200;
Timer4.Enabled:= True;
end;
procedure TForm1.Timer4Timer(Sender: TObject); // Сложное
var i:integer;
begin
fon(form1);
for i:=1 to 4 do
begin
prn[i].x:=prn[i].x+dx;
prn[i].y:=prn[i].y+dy;
end;
xv:=xv+dx;
yv:=yv+dy;
fi:=fi+dfi;
for i:=1 to 4 do
begin
pr[i].x:=round(xv+(prn[i].x-xv)*cos(fi)+(prn[i].y-yv)*sin(fi));
pr[i].y:=round(yv+(prn[i].y-yv)*cos(fi)-(prn[i].x-xv)*sin(fi));
end;
ris(pr,form1);
end;

Тест для выпускников 2021. Фотография
Графические модели
Программы для обработки звука
Компьютерная графика
Архитектура ЭВМ
Магнитные явления. Интегрированный урок
New uif video
Математическое программное обеспечение автоматизированных систем управления
Условные переменные
Использование презентаций на уроках литературного чтения
Хранение информации
Практика применения текстовых технологий на уроках информатики
SketchUp. Персонажи Angry Birds. 7 Урок
Цифровые технологии
Бизнес в стиле .RU. Управление и аналитика интернет-проекта
Основные этапы развития информационного общества
Разветвляющийся алгоритм 6 класс
Double click daemon tools lite to run
Создание web-сайта коммуникационные технологии
Программирование в среде Robot C. Занятие 3
Через тернии к информатике
Примеры логистики процедуры ОСКЭ - 2016 (2 этап аккредитационного экзамена)
Базовые технологии локальных сетей
Базы данных. История. Управление
Klik On — комплексное решение проблем сбыта, логистики, аналитики и автоматизаций бизнес процессов
Информатика. Информация
Презентация на тему Правила работы за компьютером
Создание веб-сайта салона красоты