DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Лабораторна робота № 2 «Афінні перетворення та анімація засобами мови Turbo Pascal версії 7.0»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Моделювання
Група:
КН-31
Коротко про документ

Про що ця робота

У роботі досліджено закони руху геометричних об'єктів на площині та у просторі на основі афінних перетворень. Розроблено імітаційну програму мовою Turbo Pascal для візуалізації руху та взаємодії об'єктів.

У роботі розглядаються

  • Афінні перетворення
  • Геометричне моделювання
  • Анімація графічних об'єктів
  • Мова програмування Turbo Pascal
  • Динамічна візуалізація
  • Матричні перетворення
  • Графічний режим

Зміст і розділи

  1. Мета роботи
  2. Короткі теоретичні відомості
  3. Геометричні перетворення
  4. Афінні перетворення
  5. Індивідуальне завдання
  6. Текст програми
  7. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів.
Викладачі:Викладач кафедри

Ключові поняття

афінні перетворенняматрицяTurbo Pascalанімаціягеометричне моделюванняграфічний режимімітаційна програмакоординатиперешкода

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська Політехніка” Лабораторна робота № 2 „ АФІННІ ПЕРЕТВОРЕННЯ ТА АНІМАЦІЯ ЗАСОБАМИ МОВИ TURBO PASCAL ВЕРСІЇ 7.0” з курсу „ Геометричне моделювання у конструюванні інженерних об'єктів і систем ” Львів-2005 МЕТА РОБОТИ Мета роботи – ознайомитись із законами руху геометричних об’єктів на прощині та у просторі. Оволодіти математичною мовою опису динаміки та візуалізації на основі закономірностей геометричних перетворень. Набути практичних навиків розробки графічних процедур у середовищі Turbo Pascal в графічному режимі. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ ГЕОМЕТРИЧНІ ПЕРЕТВОРЕННЯ ОСНОВНІ ПОНЯТТЯ ТА СПІВВІДНОШЕННЯ Геометричне перетворення – це відображення p'= f ( p) точки p ∈ Rn n-мірного простору образу в точку p'∈ Rn' n'-мірного простору перетворення (де Rn - евклідів простір розмірності n. Геометричне перетворення поділяються на нелінійні (наприклад, відображення у кривому дзеркалі) та лінійні. Лінійне перетворення точки описується векторним рівнянням: p'= pA + B з матрицями перетворення A∈ Rn×n' та B ∈ R1×n' , що не залежать від вектора p. У залежності від розмірності просторів n, n' та властивостей матриці А лінійні перетворення поділяються на невироджені (афінні) та вироджені (проективні). Властивості афінного перетворення: n = n',rang(A) = n (де rang(A) – ранг матриці А, рівний числу її лінійно незалежних строк чи стовпців), що означає квадратність та невиродженість матриці А. Існування зворотної матриці А-1 дозволяє по точці p' відновити точку образу p: p = ( p'−B)A−1 При проективному перетворенні m<n та не існує оберненої матриці А-1, тому однозначне відновлення образу за прообразом неможливе через втрату інформації про одну чи декілька координат образу.  Рис. 1 Геометричні перетворення: афінне ( R3→ R3 ) та проективне ( R3→ R2 ) АФІННІ ПЕРЕТВОРЕННЯ Афінні перетворення (від англ. affinity – подібність) – точкові взаємно однозначні відображення площини (простору) на себе, при яких прямі переходять у прямі. Якщо на площині задана декартова система координат, то кожне афінне перетворення цієї площини може бути визначене за допомогою так званого невирожденого лінійного перетворення координат х та у точок цієї площини. Загальний вид формул двовимірних афінних перетворень: х' = а11х + а12у + а13, y' = а21x + а22y + а23 з додатковою вимогою де x,y – координати початкового об’єкту, х', y' – координати перетвореного об’єкта. Коефіцієнти перетворень aij зберігають у виді матриці, розширеної до квадратної: , при цьому дуже просто обчислюються коефіцієнти довільного складного перетворення, якщо відомі коефіцієнти перетворень, його складових. Для цього просто перемножують відповідні матриці коефіцієнтів. Аналогічно, кожне афінний простір може бути визначений за допомогою невирождених лінійних перетворень координат точок простору. Сукупність усіх афінних перетворень площини (простору) на себе утворить групу афінних перетворень. Це означає, зокрема , що послідовне проведення двох афінни перетворень еквівалентно деякому одному афіннму перетворенню. Прикладами афінних перетворень можуть бути ортогональне перетворення (це перетворення є переміщення чи площини чи простору, переміщення із дзеркальним відображенням); перетворення подоби; рівномірне „стиснення”.  Рис.2 Приклад афінного перетворення Рівномірне „стиснення” з коефіцієнтом k площини π до розташованого на ній прямої а– перетворення, при якому точки а залишаються на місці, а кожна точка М, що не лежить на а площини π зміщається по променю, що проходить через М перпендикулярно а, у таку точку M', що відношення відстаней від М и М 'до а дорівнює k; аналогічно визначається рівномірне "стиснення" простору до площини. Всяке афінне перетворення площини можна одержати, виконавши деяке ортогональне перетворення і послідовне „стиснення” до деяких двох перпендикулярним прямим. Кожне афінне перетворення простору можна здійснити за допомогою деякого ортогонального перетворення і послідовних „стиснень” до деяких трьох взаємно перпендикулярним площинам. При афінному перетворенні паралельні прямі та площини перетворяться в паралельні прямі та площини. Властивості афінних перетворень широко використовуються в різних розділах математики, механіки і теоретичної фізики. Так, у геометрії афінні перетворення застосовуються для так званої афінної класифікації фігур. У механіці афінні перетворення використовуються при вивченні малих деформацій безупинного суцільного середовища; при таких деформаціях малі елементи середовища в першому наближенні піддаються афінному перетворенню. Афінне перетворення має наступні властивості: 1) відображає n-мірний об’єкт у n'-мірний – точку в точку, лінію в лінію, поверхню у поверхню; 2) зберігає паралельність ліній та плоскостей; 3) зберігає пропорції паралельних об’єктів – довжин відрізків на паралельних прамих та площин на паралельних площинах. Ці властивості дозволяють будувати прообрази полігонів на площині та поліедрів у просторі по кінцевому набору m точок їх вершин: ІНДИВІДУАЛЬНЕ ЗАВДАННЯ Варіант 6.Написати імітаційну програму з застосуванням афінних перетворень, яка дозволяє в автоматичному режимі та при ручному керуванні створювати динамічно змінну візуалізацію при якій моделюється утворення граду, що ковзають по нахилених поверхнях. Кількість поверхонь та їх параметри задаються з файлу.  Текст програми на мові Паскаль Program free_flowing (input,output); uses Graph,Crt; const M=385; {кiлькiсть об'єктiв} d=5; {розмiр об'єктiв} var x,y: array[1..M] of integer; {центри об'єктiв} stop,udar: array[1..M] of boolean; P: Pointer; x1,y1,x2,y2,Gd,Gm, i,r, Size : Integer; f:text; PROCEDURE DOWN(i: integer); { Покрокове перемiщення об'єкта вниз} var dx,dy: integer; begin dx:=0; dy:=r; {плановане змiщення координат об'єкта} udar[i]:=true; {ознака удару об'єкту об перешкоду} {випадок перемiщення без перешкоди} if GetPixel( x[i], y[i]+d-1)=0 then udar[i]:=false else{ знизу перешкода, але злiва вiльно} if ( GetPixel( x[i]-d, y[i] )=0 ) and( GetPixel( x[i]-d, y[i]+r)=0 ) then dx:=-d else{внизу перешкода, але справа вiльно} if ( GetPixel( x[i]+d, y[i] )=0 ) and( GetPixel( x[i]+d, y[i]+r)=0 ) then dx:=d else dy:= 0; {змiщення неможливо} if dy > 0 then begin Putimage( x[i]-r,y[i]-r, P^, 1); {стирання образу} inc( x[i],dx); inc( y[i],dy); {змiщення позицiї виводу} PutImage( x[i]-r,y[i]-r, P^, 1) {вивiд образу} end; {якщо об'єкт не рухався на попередньому кроцi} if stop[i]=true then udar[i]:=false; { якщо об'єкт не змiстився, то ставимо ознаку його зупинки} if dy=0 then stop[i]:=true else stop[i]:=false end; {головна програма} begin Gd:=0; InitGraph(Gd,Gm,' ' ) ; Size:=ImageSize(0,0, d,d); { розмiр пам'ятi для образiв} r:=d div 2; FillEllipse ( r,r, r-1,r); { образ об'єкту} GetMem(P, Size); { P - для зберiгання образу} GetImage(0,0, d,d, P^) ; ClearDevice; {Генерацiя початкових координат та властивостей образiв} for i:=1 to M do begin x[i]:=2*d*(i div 6) ; y[i]:= 2*d*(i mod 6) ; udar[i]:=false; stop[i]:=false; PutImage(x[i]-r,y[i]-r, P^,0) end; assign(f,'c.in'); reset(f); while not EOF(f) do Begin readln(f,x1,y1,x2,y2); {Зчитування перешкод з файлу} for i:=1 to d do begin {Рисування перешкод} line (x1*d, d*y1+i, x2*d, d*y2+i); end; end; close(f); Bar(0, getmaxy-d, getmaxx, getmaxy); ReadKey; Repeat {Процес змiщення об'єктiв} for i:=1 to M do DOWN(i); Until keypressed; readkey; Repeat for i:=1 to M do DOWN(i); Until readkey=#27; CloseGraph end. РЕЗУЛЬТАТ РОБОТИ ПРОГРАМИ  Висновок В даній лабораторній роботі ми – ознайомились із законами руху геометричних об’єктів на площині та у просторі. Оволоділи математичною мовою опису динаміки та візуалізації на основі закономірностей геометричних перетворень. Набули практичних навиків розробки графічних процедур у середовищі Turbo Pascal в графічному режимі.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!