Составить программу движения машины

Information technologies in the professional sphere. Industrial ICT. Perspectives of development of ICT

uses GraphABC;
var
x, y, w, h:integer;
p, p1:picture;
Begin
SetWindowSize(600,300);
p:=new Picture(‘gorod.jpg’);
p1:=new Picture(‘avto.jpg’);
x:=0; y:=150; w:=240; h:=100;
while x Begin
clearwindow;
p.Draw(0,0);
p1.Draw(x,y,w,h);
x:=x+10;
sleep(20);
redraw;
end;
end.

3.

uses GraphABC;
var
x, y, w, h:integer;
p, p1:picture;
Begin
SetWindowSize(600,300);
p:=new Picture(‘gorod.jpg’);
p1:=new Picture(‘avto.jpg’);
p1.Transparent:=true;
x:=0; y:=150; w:=240; h:=100;
while x Begin
clearwindow;
p.Draw(0,0);
p1.Draw(x,y,w,h);
x:=x+10;
sleep(20);
redraw;

Распознавание объектов на Python / Глубокое машинное обучение


end;
end.
Прозрачный фон картинки

4.

uses GraphABC;
var
x, y, w, h : integer;
p, p1:picture;
Begin
SetWindowSize(600,300);
p:=new Picture(‘gorod.jpg’);
p1:=new Picture(‘avto.jpg’);
p1.Transparent:=true;
x:=0; y:=150; w:=240; h:=100;
while x Begin
clearwindow;
p.Draw(0,0);
p1.Draw(x,y,w,h);
x:=x+10;
w:=w-2;
h:=h-2;
sleep(20);
redraw;
end;
end.
Иллюзия движения в даль

5.

uses GraphABC;
var
x, y, w, h:integer;
p, p1:picture;
Begin
SetWindowSize(600,300);
p:=new Picture(‘gorod.jpg’);
p1:=new Picture(‘avto.jpg’);
p1.Transparent:=true;
x:=0; y:=150; w:=240; h:=100;
while x Begin
clearwindow;
p.Draw(0,0);
p1.Draw(x,y,w,h);
x:=x+10;
w:=w-2;
h:=h-1;
sleep(20);
redraw;
end;
end.
Нет искажения размеров

6.

Вращение луны вокруг земли по круговой орбите.
uses GraphABC;
var x,y,x0,y0,R,u:integer;
nebo,zem,luna:picture;
begin
SetWindowSize(600,400);
x0:=300; y0:=200; R:=160;
LockDrawing;
nebo:=new Picture(‘sky.jpg’);
zem:=new Picture(‘earth.jpg’);
luna:=new Picture(‘luna.jpg’);
for u:=1 to 360 do
begin
nebo.Draw(0,0,600,400);
zem.Draw(200,120,200,200);
x:=Round(x0+R*cos(pi*u/180));
y:=Round(y0-R*sin(pi*u/180));
luna.Draw(x,y,50,50);
sleep(10);
Redraw;
end;
end.
x=R*cos(t), y=R*sin(t), 0 < t <
Нет мерцания

7.

uses GraphABC;
var x,y,x0,y0,R,u:integer;
nebo,zem,luna:picture;
begin
SetWindowSize(600,400);
x0:=300; y0:=200; R:=160;
LockDrawing;
nebo:=new Picture(‘sky.jpg’);
zem:=new Picture(‘earth.jpg’);
luna:=new Picture(‘luna.jpg’);

Распознавание объектов на Python | Поиск объектов на изображении | TensorFlow, PixelLib


while true do
for u:=1 to 360 do
begin
nebo.Draw(0,0,600,400);
zem.Draw(200,120,200,200);
x:=Round(x0+R*cos(pi*u/180));
y:=Round(y0-R*sin(pi*u/180));
luna.Draw(x,y,50,50);
sleep(10);
Redraw;
end;
end.
Бесконечное повторение

Источник: ppt-online.org

Немного программирования

Лабораторная работа №2 по предмету компьютерная графика. Задание звучало так:

Создайте машину с вращающимися колесами (вид сбоку). Скорость изменяется (+-).

При создании программы был использован компонент Timer, была реализована функция активности/неактивности кнопок, вместо динамического изменения скорости (+-) реализовано статическое (с помощью RadioButton).

Читайте также:
Программа которая замедляет видео Андроид

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, XPMan;

type
TForm1 = class(TForm)
Timer1: TTimer;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Timer2: TTimer;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
XPManifest1: TXPManifest;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;

var
Form1: TForm1;
i,x,k:integer;
implementation

procedure koleso(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+23,p2);
Canvas.LineTo(p1+23,p2+50);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso1(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+23,p2);
Canvas.LineTo(p1+23,p2+50);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso2(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+40,p2+5);
Canvas.LineTo(p1+10,p2+45);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso3(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1,p2+24);
Canvas.LineTo(p1+50,p2+24);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure koleso4(p1,p2: integer);
begin
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Ellipse(p1,p2,p1+50,p2+50);
Canvas.MoveTo(p1+5,p2+12);
Canvas.LineTo(p1+45,p2+40);
Canvas.Ellipse(p1+10,p2+10,p1+40,p2+40);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If RadioButton1.Checked=true then Timer1.Interval:=300;
If RadioButton2.Checked=true then Timer1.Interval:=100;
If RadioButton3.Checked=true then Timer1.Interval:=50;
If RadioButton4.Checked=true then Timer1.Interval:=20;
i:=i+1;
If i>4 then i:=1;
If i=1 then
begin
koleso1(130,190);
koleso3(460,190);
end;

If i=2 then
begin
koleso2(130,190);
koleso4(460,190);
end;

If i=3 then
begin
koleso3(130,190);
koleso1(460,190);
end;

If i=4 then
begin
koleso4(130,190);
koleso2(460,190);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled:=false;
Button2.Enabled:=true;
Button3.Enabled:=false;
with Form1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.MoveTo(200,100);
Canvas.LineTo(400,100);
Canvas.LineTo(470,160);
Canvas.LineTo(470,160);
Canvas.LineTo(550,160);
Canvas.LineTo(550,210);
Canvas.LineTo(100,210);
Canvas.LineTo(100,160);
Canvas.LineTo(150,160);
Canvas.LineTo(200,100);
Canvas.MoveTo(150,160);
Canvas.LineTo(470,160);
Canvas.MoveTo(200,100);
Canvas.LineTo(200,210);
Canvas.MoveTo(300,100);
Canvas.LineTo(300,210);
Canvas.MoveTo(400,100);
Canvas.LineTo(400,210);
Canvas.Ellipse(130,190,180,240);
Canvas.MoveTo(153,190);
Canvas.LineTo(153,240);
Canvas.Ellipse(140,200,170,230);
Canvas.Ellipse(460,190,510,240);
Canvas.MoveTo(460,214);
Canvas.LineTo(510,214);
Canvas.Ellipse(470,200,500,230);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer2.Enabled:=true;
Button1.Enabled:=false;
Button2.Enabled:=false;
Button3.Enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
timer1.enabled:=not timer1.enabled;
Button3.Enabled:=false;
end;

Читайте также:
Как называется программа чтобы следить за человеком

procedure TForm1.Timer2Timer(Sender: TObject);
begin
k:=k+1;
If k=1 then Label1.Caption:=’Брррррррррррррррррр……’;
If k=2 then Label1.Caption:=Label1.Caption+#13+’Чх-пых-пых-пых-пыщ…..’+#13;
If k=3 then Label1.Caption:=Label1.Caption+’Быжжжжжжжжжьь……’;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RadioButton1.Checked:=true;
Button2.Enabled:=false;
Button3.Enabled:=false;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin

Источник: ardatov.wordpress.com

Примеры выполнения вычислений в программе

Настало время применить полученные знания на практике.

Задача № 4: необходимо написать программу прямолинейного движения для проезда роботом расстояния в 1 метр.

Решение :

За один полный оборот мотора робот проезжает расстояние, равное длине окружности колеса. Это расстояние можно найти, умножив число Пи (=3,14159) на диаметр колеса. Диаметр колеса из образовательного набора Lego mindstorms EV3 равен 56 мм, а — из домашнего набора Lego mindstorms EV3 равен 43,2 мм. Если переведем расстояние в 1 метр в миллиметры (1000 мм ) и разделим на расстояние, которое робот проходит за один оборот мотора, то узнаем: сколько оборотов мотора необходимо для проезда всего заданного расстояния.

Рис . 7

Приступим к созданию программы:

1. Используя программный блок » Константа «, заведем в программу постоянное число Пи, равное примерно 3,14159.

2. Используя программный блок » Переменная «, создадим в программе переменную D и занесем в нее значение диаметра колеса в зависимости от используемого конструктора (если вы использовали другие колеса, то самостоятельно измерьте диаметр и внесите значение в программный блок).

3. Используя программный блок » Математика «, умножим значение блока » Константа » на значение переменной D. Для передачи значения из переменной D в программный блок » Математика «используем второй программный блок » Переменная » в режиме » Считывание «! (Для передачи значений между программными блоками используются шины данных. Чтобы установить шину данных, необходимо «потянуть» выходной параметр одного программного блока и «присоединить» его к входному параметру другого программного блока)

4. Используя программный блок » Математика «, разделим значение пути (1000 мм) на значение, полученное в шаге 3.

Читайте также:
Не устанавливается программа bloody 7

5. Полученное в шаге 4 значение. округлив до двух знаков после запятой, выведем на экран модуля EV3.

6. Полученное в шаге 4 значение подадим в параметр » Обороты » блока » Рулевое управление «.

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

Задача № 5: необходимо написать программу, рассчитывающую значение параметра » Градусы » для разворота нашего робота (Урок №2, Задача №1)

Данная задача имеет сходство с предыдущей — нам только требуется найти расстояние, которое должны проехать колеса нашего робота. Для того, чтобы наш робот развернулся на 180 градусов — необходимо, чтобы правое и левое колеса, проехав определенный путь по окружности, поменялись местами.

Как видим из Рис . 8 — каждое колесо при этом проедет ровно половину окружности с диаметром, равным расстоянию между центрами колес ( красная линия на Рис . 8). Подходящей линейкой померяем расстояние между центрами колес. Для робота, собранного по инструкции small-robot-45544, это расстояние равно 120 мм.

Следовательно, умножив это значение на число Пи (3,14159) и разделив на 2, мы найдем расстояние, которое должно проехать каждое из колес нашего робота. Как найти соответствующее этому расстоянию число оборотов мотора — мы разобрали в Задаче 4 данного урока. Для того, чтобы перевести полученное число оборотов в градусы — вспомним соотношение: 1 оборот мотора = 360 градусов. Следовательно, если мы, воспользовавшись программным блоком » Математика «, умножим полученное значение оборотов на 360 и подадим результат в параметр » Градусы » программного блока » Независимое управление моторами » (Урок №2 Рис.7 поз. 2), то решим требуемую задачу.

Рис . 8

Попробуйте написать программу для решения задачи №5 самостоятельно, не подглядывая в решение!

Решение Задачи №5

Дата добавления: 2019-02-26 ; просмотров: 360 ; Мы поможем в написании вашей работы!

Источник: studopedia.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru