- Главная
- Информатика
- ГРАФИКА_анимация_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;

Система экспертных продаж
Информационные системы на бумажных носителях. Способы организации данных
Kerberos сетевой протокол аутентификации, позволяющий передавать данные через незащищённые сети для безопасной идентификации
Кэширование. Введение. Вычисление числа Фибоначчи
Социальные сети. Влияние социальных сетей на нравственное формирование подростков
Киберпреступность
Soul.village. Аккаунты в Instagram
Технические средства телекоммуникаций
Компьютер и его ПО. Глава 2
Презентация на тему Ввод информации в память компьютера
Как в Асиде посмотреть аннотации и карты компетенций ООП (для педагогов)
Презентация на тему Линейные алгоритмы
Внесение данных о кадастровых номерах
Почему не работает реклама в интернете
Рисованные объекты. Панель инструментов. Рисование
Искусственный интеллект и его достижения
Бэкапы, бэкапы и еще раз бэкапы. Лекция 2
Трехмерное моделирование в современном мире
Моё хобби
Возможности голосового помощника Маруся в организации
Информационные угрозы. 11 класс
Digitalisierung der Arbeitswelt
Проектирование автоматизированных систем сбора данных приборов учета
7-2-3
Как подготовить и правильно оформить реферат
Ситуація: У вас є флешка обсягом 2 Гб. Вам потрібно терміново перенести інформацію об'ємом 2,5 Гб на інший комп'ютер. Ваші дії?
Как отправить заказ. Онлайн-магазин AVON
Искусственный интеллект в сетях связи. Лекция 2. Архитектура искусственных нейронных сетей