Лабораторна робота № 7
Тема. Динамічне
перетворення тримірних координат
Вступ
Задачі подібного вигляду виникають в процесі відображення на
екрані комп'ютера результатів тривимірного моделювання динамічних переміщень технологічного
устаткування (роботів, автоматичних ліній і т.п.).
Математичний апарат таких перетворень був розглянутий в попередній лабораторній
роботі, а методи відображення динамічного тривимірного зображення на екрані
комп'ютера базуються на алгоритмах, запропонованих у попередніх лабораторних
роботах. Тривимірне моделювання складної системи, що складається з декількох
елементів, припускає два варіанти прорахунку тримірних координат: елементи
рухаються незалежно один від одного − їх координати також розраховуються
незалежно один від одного в тривимірній системі; елементи в процесі переміщення
всієї системи здійснюють також відносні переміщення по відношенню один до
одного (окремі ланки маніпулятора робота і т.д.)
− даний випадок вимагає введення для деяких елементів модельованої
системи локальних тривимірних координат із постійним прорахунком координат у
даній системі і подальшим переведенням у координати глобальної тривимірної
системи.
Опис середовища програмування
Як і в попередніх лабораторних роботах, що реалізовують
динамічне зображення, пропонується використовувати алгоритм із зміною графічних
сторінок. Оскільки динамічне тривимірне зображення, в загальному випадку,
допускає зміну шести параметрів (три координати і три кути повороту), то при
програмній реалізації вимагається чітко визначити параметр, що використовується
як змінна циклу при перетворенні. Звичайно дане завдання вирішується на основі
аналізу конкретного завдання на моделювання.
Приклад
програми. Створити програму, яка реалізує засобами графіки мови програмування Turbo
Pascal наступне динамічне зображення: проекція
тривимірних координат відповідає варіанту, заданому в попередній лабораторній
роботі; вид зображення і тип переміщення відповідає таким параметрам: лінія 1 (0,0,0;110,0,0); лінія 2
(110,0,0;110,90,0).
Лістинг програми
program
s;
uses crt, graph;
var
driver, mode:integer;
h,dx,dy,j,y,x11,y11:integer;
mx,my:word;
a,i:real;
begin
driver:=0;
mode:=0;
x11:=100; y11:=1;
y:=0; j:=0;
dx:=170;dy:=265;
setcolor(white);
setlinestyle(0,0,3);
line
(300,0,300,200);
line
(300,0,197,15);
line
(300,0,303,15);
line
(300,100,100,300);
line
(100,300,115,197);
line
(100,300,111,189);
line
(500,300,483,197);
line
(500,300,487,189);
outtextxy(288,0,'z');
outtextxy(98,181,'y');
outtextxy(500,190,'x');
outtextxy(188,191,'0');
i:=0
;
while i<6.1 do
begin
setcolor(red);
putpixel(170,265,red);
putpixel(dx+round(cos(i)*(x11+y)*sin(i)*(y11+y)-j),
dy-(round(mx/my*(sin(i)*(x11+y)+cos(i)*(y11+y))-j)), white);
setcolor(red);
line (170,265,dx+round(cos(i)*(x11+y)*sin(i)*(y11+y)-j),
dy-(round(mx/my*(sin(i)*(x11+y)+cos(i)*(y11+y))-j)));
setcolor(0);
delay
(5000) ;
line (170,265,dx+round(cos(i)*(x11+y)*sin(i)*(y11+y)-j),
dy-(round(mx/my*(sin(i)*(x11+y)+cos(i)*(y11+y))-j)));
setcolor(red);
line
(170,265,300,200);
i:=i+0.1;
end ;
readln;
end.
Варіанти завдань
Створити програму, що реалізовує засобами графіки мови
програмування TurboPascal наступне динамічне
зображення:
а) проекція тривимірних координат відповідає варіанту, заданому
в попередній лабораторній роботі;
б) вид зображення і тип переміщення відповідає таким параметрам:
варіанти 1-5: лінія 1 (0, 0, 0; 0, 90, 0); лінія 2 (40, 0, 0; 40, 90, 0)
1.
лінія 2 здійснює повний оберт навколо лінії 1 за годинниковою
стрілкою. Все зображення при цьому переміщується уздовж осі Y на 180
пікселів;
2.
лінія 1 − здійснює повний оберт навколо осі X проти
годинникової стрілки, а лінія 2 в два рази повільніше обертається навколо осі X
за годинниковою стрілкою. Все зображення переміщується вздовж осі X на 100
пікселів;
варіанти 16-20: лінія 1 (0, 0, 0; 110, 0, 0); лінія 2 (110, 0, 0; 110, 90, 0)
16. лінія 1 здійснює повний оберт навколо лінії 2 за
годинниковою стрілкою. При цьому вся система зсувається вздовж осі X на 120
пікселів;
17. лінія 2 здійснює повний оберт навколо осі X проти
годинникової стрілки. Вся система зсувається уздовж осі 2 на 180 пікселів;
18. вся система здійснює повний оберт навколо точки з'єднання за
годинниковою стрілкою і переміщується уздовж осі Y на 90 пікселів;
19. лінії здійснюють повний оберт, обертаючись в протилежні
сторони. При цьому вся система переміщується уздовж осі 2 на 120 пікселів;
20. лінія 1 здійснює повний оберт навколо осі Y за годинниковою
стрілкою, а лінія 2 − повний оберт навколо осі X проти годинникової
стрілки.
Зміст звіту
1)
Зміст завдання;
2)
лістинг програми;
3)
надруковане зображення.
Контрольні питання
1.
За яких умов виявляється некоректність графічного зображення
моделюючої системи на екрані в даній лабораторній роботі?
2.
Як виглядатиме алгоритм програми під час використання в даній
лабораторній роботі тільки однієї графічної сторінки?
3.
Чи можна використовувати як змінну циклу зсув по координатних
осях?
4.
Чи можна змоделювати переміщення по різних осях тримірної
системи з різною швидкістю?
Чи можна в даній лабораторній роботі
змоделювати зміну розмірів системи, що переміщується?