Symulacja Komputerowa w Czasie Rzeczywistym



Podobne dokumenty
3. KINEMATYKA Kinematyka jest częścią mechaniki, która zajmuje się opisem ruchu ciał bez wnikania w jego przyczyny. Oznacza to, że nie interesuje nas

Podstawy Procesów i Konstrukcji Inżynierskich. Praca, moc, energia INZYNIERIAMATERIALOWAPL. Kierunek Wyróżniony przez PKA

Zasady dynamiki Newtona

Tadeusz Lesiak. Dynamika punktu materialnego: Praca i energia; zasada zachowania energii

Elementy dynamiki klasycznej - wprowadzenie. dr inż. Romuald Kędzierski

Zasady dynamiki Newtona. Ilość ruchu, stan ruchu danego ciała opisuje pęd

METODY OBLICZENIOWE. Projekt nr 3.4. Dariusz Ostrowski, Wojciech Muła 2FD/L03

Zasady dynamiki Newtona. Pęd i popęd. Siły bezwładności

Równa Równ n a i n e i ru r ch u u ch u po tor t ze (równanie drogi) Prędkoś ędkoś w ru r ch u u ch pros pr t os ol t i ol n i io i wym

DYNAMIKA SIŁA I JEJ CECHY

Wykład FIZYKA I. 5. Energia, praca, moc. Dr hab. inż. Władysław Artur Woźniak

Fizyka 1 Wróbel Wojciech. w poprzednim odcinku

Zasady dynamiki Newtona. dr inż. Romuald Kędzierski

Zasada zachowania pędu

Zasady dynamiki Newtona. Ilość ruchu, stan ruchu danego ciała opisuje pęd

MECHANIKA II. Praca i energia punktu materialnego

Zasady dynamiki Newtona. Autorzy: Zbigniew Kąkol Kamil Kutorasiński

Podstawy fizyki wykład 4

Wektory, układ współrzędnych

Definicje i przykłady

ZASADY DYNAMIKI. Przedmiotem dynamiki jest badanie przyczyn i sposobów zmiany ruchu ciał.

Fizyka 1 Wróbel Wojciech. w poprzednim odcinku

Defi f nicja n aprę r żeń

Podstawy fizyki sezon 1 III. Praca i energia

Elementy rachunku różniczkowego i całkowego

13. Równania różniczkowe - portrety fazowe

Wstęp do równań różniczkowych

Wstęp do równań różniczkowych

Spis treści. Wstęp Część I STATYKA

Prawa ruchu: dynamika

KINEMATYKA I DYNAMIKA CIAŁA STAŁEGO. dr inż. Janusz Zachwieja wykład opracowany na podstawie literatury

Wydział Inżynierii Środowiska; kierunek Inż. Środowiska. Lista 2. do kursu Fizyka. Rok. ak. 2012/13 sem. letni

Treści dopełniające Uczeń potrafi:

3. FUNKCJA LINIOWA. gdzie ; ół,.

Mechanika ogólna / Tadeusz Niezgodziński. - Wyd. 1, dodr. 5. Warszawa, Spis treści

Podstawowy problem mechaniki klasycznej punktu materialnego można sformułować w sposób następujący:

Podstawy Procesów i Konstrukcji Inżynierskich. Dynamika

Fizyka 1- Mechanika. Wykład 4 26.X Zygmunt Szefliński Środowiskowe Laboratorium Ciężkich Jonów

WYMAGANIA EDUKACYJNE PRZEDMIOT : FIZYKA ROZSZERZONA

Prawa ruchu: dynamika

lim Np. lim jest wyrażeniem typu /, a

Zasady oceniania karta pracy

STAN NAPRĘŻENIA. dr hab. inż. Tadeusz Chyży

Wykład 2. Kinematyka. Podstawowe wielkości opisujące ruch. W tekście tym przedstawię podstawowe pojecia niezbędne do opiosu ruchu:

Wyznaczanie współczynnika sprężystości sprężyn i ich układów

Zadanie. Oczywiście masa sklejonych ciał jest sumą poszczególnych mas. Zasada zachowania pędu: pozwala obliczyć prędkość po zderzeniu

MECHANIKA II. Dynamika układu punktów materialnych

FIZYKA klasa 1 Liceum Ogólnokształcącego (4 letniego)

MECHANIKA II. Dynamika ruchu obrotowego bryły sztywnej

DRGANIA SWOBODNE UKŁADU O DWÓCH STOPNIACH SWOBODY. Rys Model układu

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Laboratorium II: Modelowanie procesów fizycznych Skrypt do ćwiczeń

Podstawy fizyki sezon 1 IV. Pęd, zasada zachowania pędu

Podstawy fizyki wykład 4

VII. WYKRESY Wprowadzenie

DYNAMIKA dr Mikolaj Szopa

Podstawy fizyki sezon 1 V. Pęd, zasada zachowania pędu, zderzenia

Praca. Siły zachowawcze i niezachowawcze. Pole Grawitacyjne.

Ćwiczenie M-2 Pomiar przyśpieszenia ziemskiego za pomocą wahadła rewersyjnego Cel ćwiczenia: II. Przyrządy: III. Literatura: IV. Wstęp. l Rys.

Wykład 7: Układy cząstek. WPPT, Matematyka Stosowana

18. Siły bezwładności Siła bezwładności w ruchu postępowych Siła odśrodkowa bezwładności Siła Coriolisa

Metody numeryczne I Równania nieliniowe

Politechnika Wrocławska, Wydział Informatyki i Zarządzania. Modelowanie

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.

17.1 Podstawy metod symulacji komputerowych dla klasycznych układów wielu cząstek

Wektor położenia. Zajęcia uzupełniające. Mgr Kamila Rudź, Podstawy Fizyki.

Z52: Algebra liniowa Zagadnienie: Zastosowania algebry liniowej Zadanie: Operatory różniczkowania, zagadnienie brzegowe.

DRGANIA ELEMENTÓW KONSTRUKCJI

Wyznaczenie współczynnika restytucji

LXVII OLIMPIADA FIZYCZNA ZAWODY II STOPNIA

Zasada zachowania energii

1. Kinematyka 8 godzin

MiBM sem. III Zakres materiału wykładu z fizyki

Fizyka 11. Janusz Andrzejewski

Oddziaływania. Wszystkie oddziaływania są wzajemne jeżeli jedno ciało działa na drugie, to drugie ciało oddziałuje na pierwsze.

Zasady dynamiki Isaak Newton (1686 r.)

WYMAGANIA Z WIEDZY I UMIEJĘTNOŚCI NA POSZCZEGÓLNE STOPNIE SZKOLNE DLA KLASY CZWARTEJ H. zakres rozszerzony. Wiadomości i umiejętności

Wstęp. Ruch po okręgu w kartezjańskim układzie współrzędnych

W efekcie złożenia tych dwóch ruchów ciało porusza się ruchem złożonym po torze, który w tym przypadku jest łukiem paraboli.

MECHANIKA 2 Wykład Nr 9 Dynamika układu punktów materialnych

Pierwsze dwa podpunkty tego zadania dotyczyły równowagi sił, dla naszych rozważań na temat dynamiki ruchu obrotowego interesujące będzie zadanie 3.3.

Mgr inż. Wojciech Chajec Pracownia Kompozytów, CNT Mgr inż. Adam Dziubiński Pracownia Aerodynamiki Numerycznej i Mechaniki Lotu, CNT SMIL

Konrad Słodowicz sk30792 AR22 Zadanie domowe satelita

O 2 O 1. Temat: Wyznaczenie przyspieszenia ziemskiego za pomocą wahadła rewersyjnego

5. Rozwiązywanie układów równań liniowych

Numeryczne rozwiązywanie równań różniczkowych ( )

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY MATEMATYKA KLASA 8 DZIAŁ 1. LICZBY I DZIAŁANIA

Siły zachowawcze i niezachowawcze. Autorzy: Zbigniew Kąkol Kamil Kutorasiński

Modelowanie wybranych zjawisk fizycznych

Rozszerzony konspekt preskryptu do przedmiotu Podstawy Robotyki

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik

TUTORIAL: Konwersja importowanej geometrii na arkusz blachy

Symulacje komputerowe

PLAN REALIZACJI MATERIAŁU NAUCZANIA FIZYKI W GIMNAZJUM WRAZ Z OKREŚLENIEM WYMAGAŃ EDUKACYJNYCH

Blok 6: Pęd. Zasada zachowania pędu. Praca. Moc.

SIŁA JAKO PRZYCZYNA ZMIAN RUCHU MODUŁ I: WSTĘP TEORETYCZNY

OPISY PRZESTRZENNE I PRZEKSZTAŁCENIA

5.1. Powstawanie i rozchodzenie się fal mechanicznych.

Przykłady: zderzenia ciał

A,B M! v V ; A + v = B, (1.3) AB = v. (1.4)

Transkrypt:

Piotr Tronczyk, Romuald Kotowski Symulacja Komputerowa w Czasie Rzeczywistym Polsko-Japońska Wyższa Szkoła Technik Komputerowych Katedra Metod Komputerowych Techniki ul. Koszykowa 86, 02-008 Warszawa tronczyk@pjwstk.edu.pl, rkotow@pjwstk.edu.pl Streszczenie W pracy przedstawiono model tkaniny w postaci stabilnego układu punktów materialnych połączonych wiązaniami sprężystymi. Rozwiązano zagadnienie kolizji tkaniny z obiektami świata zewnętrznego (np. ze ścianami czy przeszkodami napotykanymi podczas ruchu). Zaprezentowaną metodę wykorzystano do następujących symulacji komputerowych: swobodny spadek tkaniny na sferę, tkanina podwieszona, flaga powiewająca na wietrze. Wstęp Podczas symulacji zjawisk fizycznych stajemy przed poważnymi problemami numerycznymi, których rozwiązanie jest niejednokrotnie trudne oraz czasochłonne. W wielu aplikacjach musimy sprostać wzajemnie przeciwstawnym wymaganiom. Taka sytuacja zachodzi np. dla animacji filmowych, w których z jednej strony musimy wygenerować obrazy jak najbardziej blisko oddające przebieg rzeczywistych procesów, a z drugiej strony chcemy by ich generacja przebiegała w czasie rzeczywistym, więc ani zbyt szybko, ani zbyt wolno. Współczesna technologia komputerowa umożliwia realizację tych zadań na razie tylko dla niezbyt skomplikowanych symulacji, ale obserwacja jej rozwoju pozwala mieć nadzieję, że będzie możliwe w taki sposób traktowanie coraz bardziej skomplikowanych symulacji. Aby symulacja zjawiska fizycznego wyglądała realistycznie, musimy uwzględnić bardzo dużą liczbę parametrów, co powoduje komplikację obliczeń numerycznych. W tej sytuacji celowym jest dokonanie szczegółowej analizy postawionego zadania i wyodrębnienie z niego mniejszych elementów, dla których można dokonać niezbędnych obliczeń, a następnie złożyć z nich ponownie wyjściowy model. Pożyteczne jest również przygotowanie zestawu narzędzi pozwalających wykorzystywać w symulacjach podstawowe prawa fizyki, np. prawa dynamiki Newtona, czy to w badaniu ruchu punktu materialnego czy też bryły sztywnej. Zamiast budować każdą symulacje od początku możemy wykorzystać niektóre elementy występujące w wielu zagadnieniach fizycznych. Podejście to zostanie przedstawione na przykładzie symulacji ruchu tkaniny (ubranie, flaga) będącej pod wpływem siły grawitacji i lepkości ośrodka w którym jest umieszczona. Problem jest dość złożony, jeżeli jednak potraktujemy tkaninę jako zbiór punktów materialnych i będziemy zajmowali się ruchem tylko tych pojedynczych elementów, to okaże się, że zadanie znacznie się upraszcza. 1 Model fizyczny Każdy proces przygotowania symulacji komputerowej rozpoczynamy od zdefiniowania modelu fizycznego, który przekształcamy w model matematyczny i następnie w model numeryczny. W niniejszej pracy również postępujemy zgodnie z tą metodologią. Naszym celem jest symulacja ruchu cienkiego, wiotkiego i podatnego na deformacje sprężyste wycinka powierzchni, który w dalszym ciągu pracy nazywać będziemy tkaniną. Nazwa ta dobrze oddaje pożądane cechy obiektu będącego przedmiotem naszych zamierzeń symulacyjnych. Do tych pożądanych cech zaliczamy w szczególności: 1. łatwość dopasowania się do kształtu obiektów napotykanych na drodze ruchu, np. możliwość zawijania się wokół kuli, czy też rozpłaszczanie na płaszczyźnie podłoża, 2. możliwość zachowania pewnej sztywności, a więc np. zachowania stałości kształtu w trakcie swobodnego opadania pod wpływem siły ciężkości, 3. ciągłość powierzchni, a więc nawet wtedy gdy nastąpi silne zniekształcenie powierzchni, np. zawijanie i falowanie, to nie może zajść przebicie tej powierzchni przez siebie samą,

4. grubość tkaniny H jest dużo mniejsza od jej pozostałych wymiarów, czyli od długości L i szerokości W ; tak więc zachodzą następujące związki: L H 1, i W H 1. W pierwszym przybliżeniu zaniedbujemy wpływ grubości tkaniny na jej zachowanie. Niech masa tkaniny wynosi M. Zakładamy, że tkanina jest jednorodna, więc możemy przyjąć, że składa się z węzłów o jednakowej masie m i połączonych sprężystymi wiązaniami. Zachodzi więc związek: M = m n, gdzie n liczba węzłów tkaniny, którym przypisujemy cechy punktów materialnych. Odpowiedzi na pytanie, jakie rodzaju mają to być wiązania łączące węzły - punkty materialne, będziemy poszukiwali na drodze eksperymentów numerycznych. 2 Model matematyczny Model matematyczny tworzy układ równań (różniczkowych algebraicznych) opisujących zachowanie modelu fizycznego badanego układu rzeczywistego. W naszym przypadku podstawowym elementem badań jest ruch punktu materialnego pod wpływem przyłożonych sił. 2.1 Punkt materialny Ruch punktu materialnego jest określony przez drugą zasadę dynamiki Newtona: pochodna wektora pędu punktu materialnego względem czasu jest równa przyłożonej do niego sile F = dp, lub w przypadku gdy m = const, w dt postaci: F = ma, czyli d 2 r dt 2 = F m. (2.1) Jest to z równanie różniczkowe zwyczajne drugiego rzędu, które można rozwiązać numerycznie w prosty sposób stosując metodę Eulera, bądź bardziej dokładną metodę Rungego-Kutty. 2.2 Siły Wektor F jest wypadkową wszystkich sił działających na punkt materialny. W omawianym modelu uwzględniono tylko trzy siły: F g siłę przyciągania Ziemi, F l siłę oporu stawianą ruchowi tkaniny przez ośrodek (gaz, ciecz), w którym tkanina się porusza, F w siłę oddziaływania punktu materialnego z sąsiednimi punktami materialnymi. Mamy więc ostatecznie, że F = F g + F l + F w. (2.2) 2.2.1 Siła grawitacji Zgodnie z II zasadą dynamiki Newtona siła będąca wynikiem przyciągania Ziemi i działająca na pojedynczy punkt materialny wynosi: F g = mg, (2.3) gdzie m masa punktu materialnego, g przyspieszenie grawitacyjne. 2

2.2.2 Lepkość ośrodka W trakcie swego ruchu poprzez ośrodek (gaz lub ciecz), występuje zjawisko tarcia. Przy niewielkich prędkościach, odpowiednia siła oporu jest proporcjonalna do prędkości i jest skierowana przeciwnie do kierunku ruchu. W przypadku swobodnego spadku tkaniny będzie ona miała kierunek przyspiszenia grawitacyjnego, ale zwrot będzie przeciwny. Tak więc, w naszym przypadku opór ośrodka modelujemy równaniem: F l = k l v, (2.4) gdzie k l współczynnik lepkości ośrodka. Zakładamy, że ruch jest powolny, czyli siła jest proporcjonalna do prędkości. Dla większych prędkości siła oporu ośrodka jest proporcjonalna do wyższych potęg prędkości (np. w modelowaniu ruchu pocisku). 2.2.3 Oddziaływanie punktów materialnych Połączenie pomiędzy punktami materialnymi można zrealizować implementując w modelu nową siłę, siłę sprężystości, wynikającą bezpośrednio z prawa Hooke a, która dla sprężyny ma postać gdzie k s współczynnik sprężystości, a r wydłużenie sprężyny. F s = k s r, (2.5) Uogólniając ten wzór na oddziaływanie między dwoma punktami o wektorach wodzących r 1 i r 2 otrzymamy, że F s 12 = k s ( r 1 r 2 d) r 1 r 2 r 1 r 2, (2.6) gdzie d długość sprężyny w stanie równowagi. Siły wynikające z oddziaływania sprężystego obliczamy korzystając z prawa Hooke a opisanego wzorem (2.6). W trakcie drgań sprężyny występuje siła tłumiąca jej ruch, którą opisujemy następującym wzorem : [ ( )] F t 12 = k d r1 r 2 (v 1 v 2 ) r 1 r 2 r 1 r 2 r 1 r 2 Ostatecznie więc siła oddziaływań między węzłami wynosi: F 12 = gdzie k d współczynnik tłumienia sprężyny. (2.7) F 12 = F s + F t (2.8) ( [ k s ( r 1 r 2 d) + k d (v 1 v 2 ) r ]) 1 r 2 r 1 r 2 r 1 r 2 r 1 r 2, (2.9) Równanie (2.7) pozwala modelować utratę energii w trakcie odkształcenia sprężyny. Energia ta zostaje zamieniona na ciepło. W przyjętym modelu zakładamy, że wzrost temperatury spowodowany ściskaniem oraz rozciąganiem sprężyny nie ma wpływu na zmianę właściwości materiału, z którego została ona wykonana. Wyznaczenie siły działającej na drugi z punktów (r 2 ) tworzących układ połączony sprężyście, sprowadza się do odwrócenia znaku siły wyliczonej dla pierwszego punktu. Tak opisaną siłę oddziaływania punktów materialnych wykorzystamy w naszym modelu do łączenia punktów materialnych w obiekty złożone. 3 Model numeryczny Opisany wyżej model matematyczny przekształcimy na model numeryczny, w celu dokonania obliczeń komputerowych i realizację animacji komputerowej przedstawiającą ruch tkaniny. Do obliczeń komputerowych zastosujemy podejście obiektowe. Pierwszym i najważniejszym z rozważanych przez nas obiektów jest punkt materialny. Przypisujemy mu następujące atrybuty: masę, położenie, prędkość i przyspieszenie. Działają nań siły zewnętrzne, np. grawitacja i opór ośrodka w którym się porusza. Punkty materialne są prostymi obiektami, więc symulacja ich zachowania nie sprawia trudności. Można z nich konstruować bardziej złożone struktury, wprowadzając dodatkowe oddziaływania między nimi, np. połączenia sprężyste punktów materialnych. Zachowanie takiego układu musi spełniać wtedy zasady dynamiki Newtona oraz prawo Hooke a. 3

Dotychczasowe doświadczenie wskazuje, iż podejście programowania obiektowego nadaje się jak najbardziej do realizacji systemu symulacyjnego opartego na obiektach typu punkt materialny. Pojedyncze punkty można przechowywać w prostych strukturach danych, np. w liście (lub innej strukturze danych), umożliwiającej łatwy i szybki dostęp do danego elementu oraz proste operacje wstawiania i usuwania elementów. 3.1 Rozwiązywanie równań ruchu W celu numerycznego rozwiązania zagadnienia sprowadzamy równanie różniczkowe drugiego stopnia (2.1) do układu dwóch równań różniczkowych pierwszego rzędu: gdzie n liczba punktów materialnych. dr i dt = v i, dv i dt = F i. m i i = 1,..., n (3.1) Ogólny algorytm obliczający przemieszczenia pojedynczych punktów materialnych wygląda następująco: oblicz siły działające na każdy punkt materialny o wektorze wodzącym r i, rozwiąż układ równań ruchu dla wszystkich n punktów. Ten prosty system (nawet bez uwzględnienia oddziaływań sprężystych między punktami), daje możliwość symulacji zjawisk takich jak krople wody wylatujące z fontanny czy fajerwerki. Oczywiście, jest to bardzo duże przybliżenie zjawiska, ale zaletą takiego systemu jest jego prostota oraz szybkość działania. To właśnie podejście stosowane jest praktycznie, np. podczas realizacji filmów animowanych. 3.2 Notacja Zakładamy że system składa się z n punktów materialnych w przestrzeni R 3. Każdemu punktowi materialnemu przypisujemy następujące atrybuty: r i wektor położenia i-tego punktu, v i wektor prędkości i-tego punktu, F i wektor wypadkowej siły działającej na i-ty punkt, r = {r 1, r 2,..., r n } wektor rozmiaru 3 n (ponieważ każdy punkt opisany jest w przestrzeni trójwymiarowej poprzez składowe położenia x, y, z) v = {v 1, v 2,..., v n } wektor rozmiaru 3 n (ponieważ każdy punkt opisany jest w przestrzeni trójwymiarowej poprzez składowe prędkości wzdłuż osi x, y, z), F = {F 1, F 2,..., F n } wektor rozmiaru 3 n (ponieważ wypadkowa siła działająca na punkt opisana jest w przestrzeni trójwymiarowej poprzez składowe wzdłuż osi x, y, z). Wektory oznaczamy drukiem wytłuszczonym. 4

3.3 Różnice skończone W modelu numerycznym musimy zamienić równania różniczkowe na równania różnicowe. Zastosujemy tu standardową procedurę. Rozpatrzmy równanie różniczkowe zwyczajne pierwszego rzędu: dy = f(y, t). dt Z definicji pochodnej wiemy, że: ( ) dy y dt = lim t 0 t y(t + t) y(t) = lim. (3.2) t 0 t Dla potrzeb numerycznych stosujemy przybliżenie t = const 0. Wielkość kroku czasowego może być w trakcie realizacji obliczeń zmieniana, niemniej dla każdego kroku jest stała. W ten sposób otrzymujemy układ równań różnicowych, które rozwiązujemy numerycznie korzystając z metody Eulera według schematu pokazanego na rysunku 3.1. Główny nacisk kładziemy na wizualizację otrzymanych wyników, jest to z punktu widzenia naszych wymagań wystarczająco dobre przybliżenie. t=const r 0 ={x 0,y 0,z 0 } v 0 ={v x0,v y0,v z0 } r=r 0 v=v 0 v=[f(r(t),t)/m]* t v=v+ vt r=v* t r=r+ r Narysuj punkt Dalej? nie Koniec Rysunek 3.1: Schemat blokowy rozwiązywania układu równań różniczkowych metodą Eulera tak 4 Kolizje Wykrywanie kolizji jest bardzo ważną, integralną częścią procesu symulacji. Zdarzenia polegające na zderzeniu tkaniny z przeszkodami wywołują różne zachowanie się tkaniny w zależności od geometrii uderzanego obiektu. W pierwszym przybliżeniu, a tu realizowanym, uderzane obiekty są nieruchome. Kolejnym bardzo ważnym elementem są samozderzenia, czyli zderzenia tkaniny samej ze sobą. Nie można z góry przewidzieć, jakie części tkaniny ulegną tak silnemu zakrzywieniu, że zderzą się z inną swą częścią. Algorytm badania takiego zdarzenia jest dobrze znany, ale jak na razie jest zbyt powolny, by mógł spełniać nasze oczekiwania. W kolejnych podrozdziałach rozpatrzymy kolizje tkanina ściana i tkanina sfera. 4.1 Kolizje punkt-ściana Rozpatrzmy kolizję punkt-ściana ograniczająca. Realizacja tego najprostszego z typów kolizji pozwoli nam przedstawić pierwsze efekty działania algorytmu. Rozważania będą prowadzone dla przypadku dwuwymiarowego, ale przejście do trzech wymiarów nie jest niczym skomplikowanym. Zdefiniujemy dwuwymiarowy, fizyczny świat złożony z pojedynczego punktu materialnego ograniczonego poprzez ściany opisane prostymi: x = -1, x = 1, y = -1 i y = 1. Nie interesują nas siły działające na punkt materialny, wiemy tylko, że ma on pewną prędkość, znamy jego położenie i istniejące ograniczenia (więzy) nałożone na jego ruch. Zdefiniujemy je następująco: float xmin = -1, xmax = 1, ymin = -1, ymax = 1; Ograniczenia te to równania prostych ograniczających ruch punktów materialnych w modelu. W pierwszym kroku wyznaczymy wektory normalne do ścian (w przypadku dwuwymiarowym do prostych) ograniczających ruch punktu materialnego. Odpowiednio dla ścianek ograniczających rysunek 4.1 wektory mają następującą postać: Wektor n1( 1, 0, 0); Wektor n2(-1, 0, 0); Wektor n3( 0, 1, 0); Wektor n4( 0,-1, 0); 5

n 3 n 1 n 4 n 2 Rysunek 4.1: Wektory normalne do ścianek ograniczających ruch punktu materialnego Powstaje pytanie, w jaki sposób rozpoznawać kolizje punktu ze ścianą? Dla tego konkretnego przypadku ścian ograniczających procedura obsługi kolizji jest dość prosta. Weźmy dany punkt P w modelu. Pytanie, czy nastąpiła kolizja z którąkolwiek ze ścian, sprowadza się do pytania, czy punkt znajduje się wewnątrz prostokąta o współrzędnych (xmin,ymin,xmax,ymax). Intuicyjnie poprawnym podejściem jest sprawdzenie, czy współrzędne (x, y, z) punktu znajdują się wewnątrz prostokąta ograniczającego: if (x < xmin y < ymin x > xmax y > ymax) { \\ nastapila kolizja } W przypadku trójwymiarowym należy dodatkowo uwzględnić ograniczenia zmin oraz zmax 4.2 Kolizja ze sferą Wprowadzimy do naszego modelu nowy obiekt, sferę kolizji. Sfera kolizji jest obszarem zdefiniowanym przez wektor położenia, promień sfery oraz pewien współczynnik tłumienia tlum, określający stratę energii przy odbiciu punktu od sfery. Wykrycie kolizji punktu materialnego ze sferą nie jest zadaniem trudnym. Na rysunku 4.2 przedstawiono sferę kolizji o promieniu R oraz punkt materialny. y z=0 n R n r n r 1 Rysunek 4.2: Sfera kolizji i punkt materialny w rzucie na płaszczyzn xy Wektory n zaznaczone na rysunku, są normalnymi do powierzchni sfery. Oczywiście, wektorów tych jest nieskończenie wiele. Oznaczenie kilku wektorów tą samą literą nie oznacza, że są one sobie równe. Można powiedzieć, że n jest funkcją otrzymującą jako parametr współrzędne punktu na powierzchni sfery i wyznaczającą dla tego punktu wektor normalny. Obsługa kolizji w naszym przypadku sprowadza się do sprawdzenia, czy punkt znajduje się wewnątrz czy na zewnątrz sfery. Aby to zrobić, należy wyznaczyć odległość między wektorem wodzącym punktu materialnego (na rysunku 4.2 wektor r) oraz środkiem sfery kolizji (wektor r 1 ) i porównać ją do promienia sfery. Jeśli odległość ta będzie mniejsza od promienia R, nastąpiła penetracja sfery przez punkt materialny i wtedy należy obsłużyć kolizję. Odległość punktu od środka sfery wynosi d = r 1 r. Fragment procedury sprawdzającej warunek kolizji przybiera więc następującą postać (sfera i punkt - wskaźniki odpowiednich obiektów):... x 6

d = (sfera->r1 - punkt->r).dlugosc(); if (d - sfera->r < 0) //obsluga kolizji else // sprawdz nastepny punkt... Załóżmy, że procedura sprawdzająca wykryła penetrację sfery. Punkt kolidujący ze sferą przede wszystkim należy przesunąć na zewnątrz, tak by w następnym kroku czasowym kolizja nie wystąpiła. Do przesunięcia punktu wykorzystamy wektor normalny do powierzchni sfery, który wskazuje kierunek najkrótszej drogi punktu na zewnątrz. Na rysunku 4.3 przedstawiono kolizję punktu ze sferą. Widać, że odległość d między punktem a środkiem sfery jest mniejsza od jej promienia. Zgodnie z oznaczeniami na rysunku przyrost wektora położenia punktu, przesuwający go na zewnątrz, to iloczyn wektora normalnego n przez odległość z. n R z d Rysunek 4.3: Penetracja sfery przez punkt materialny Zauważmy, że wektor normalny do powierzchni sfery nie zależy on w ogóle od jej promienia. Korzystając z tej właściwości, możemy łatwo wyznaczyć n w punkcie wskazywanym przez położenie r punktu materialnego: n = (sfera->r1 - punkt->r); n.normuj(); Następnym krokiem będzie bezpośrednie przesunięcie punktu na zewnątrz, gdzie wielkość z znajdujemy z prostej relacji z=r-d: z = d - sfera->r; punkt->r = punkt->r + n*z; Po przesunięciu punktu należy odpowiednio zmodyfikować jego prędkość, czyli wykonać odbicie. W tym celu (patrz rysunek 4.4) należy zmienić zwrot składowej normalnej wektora prędkości punktu do powierzchni sfery. Podzielimy wektor prędkości punktu na składowe. Dla zadanego wektora normalnego n, korzystając z własności iloczynu skalarnego, mamy: Vn = n * (n*punkt->v); Vs = punkt->v - Vn; Po rozdzieleniu wektora prędkości pozostaje wyznaczyć prędkość wypadkową jako różnicę Vs i Vn (patrz rysunek 4.4), skąd otrzymujemy: punkt->v = Vs - Vn; Współczynnik tłumienia dla sfery kolizji, o którym była mowa na początku podrździału, jest liczbą dodatnią z przedziału [0,1]. Aby uwzględnić współczynnik tłumienia danej sfery, należy przez niego przemnożyć otrzymaną prędkość, czyli podany wiersz można zapisać jako: punkt->v = (Vs - Vn * sfera->tlum); 7

R V R R R -V n V w V w V s Rysunek 4.4: Schemat odbicia składowej normalnej (do powierzchni sfery) wektora prędkości punktu materialnego 5 Symulacja Rysunek 4.5: Tkanina kolidująca ze sferą W każdym kroku czasowym program oblicza nowe położenia oraz prędkości punktów wchodzących w skład modelu tkaniny, uwzględniając ich sprężyste oddziaływania. Na podstawie tych nowych położeń punktów, budowana jest siatka służąca do reprezentacji graficznej tkaniny, a następnie w trakcie wizualizacji obliczeń, nakładana jest na siatkę odpowiednia tekstura. Z wykorzystaniem zaprezentowanej metody zrealizawoano następujące symulacje komputerowe: 1. swobodny spadek tkaniny na sferę, 2. tkanina podwieszona, 3. flaga powiewająca na wietrze. Model zaprezentowany na rysunku 5.1.a, jest niestabilny, połączenia tylko pomiędzy pierwszymi sąsiadami nie są w stanie utrzymać struktury. Konieczna więc jest modyfikacja modelu polegająca na dodaniu dodatkowych oddziaływań pomiędzy drugimi i trzecimi sąsiadami, tak jak na rysunku 5.1.b. 8

(a) (b) Rysunek 5.1: Modele tkaniny: (a) model niestabilny; (b) model stabilny (a) (b) Rysunek 5.2: Symulacja ruchu tkaniny pod wpływem sił zewnętrznych: (a) tkanina w spoczynku; (b) tkanina poddana działaniu sił zewnętrznych (a) (b) Rysunek 5.3: Flaga powiewająca na wietrze: (a) flaga z teksturą, (b) siatka flagi Dodanie wiatru do modelu pozwala na symulowanie takich obiektów jak flaga czy innych tkanin poddanych działaniu siły wiatru. 9

Prosty model wiatru może wyglądać następująco: najpierw model tkaniny musi zostać podzielony na trójkąty; jest to proste, ponieważ tkanina jest już opisana jako tablica punktów; siła wiatru jest obliczana indywidualnie dla każdego trójkąta wchodzącego w skład tkaniny; wyliczona siła dodawana jest do sił działających na punkty wchodzące w skład trójkąta. Siła działająca na trójkąt będzie miała kierunek wektora normalnego tego trójkąta. Wektory normalne oczywiście należy obliczać dla każdej nowej klatki animacji, ponieważ w każdym kroku tkanina ulega deformacji. Siła jest proporcjonalna do pola powierzchni trójkąta, a zależy od kąta pod jakim wiatr pada na trójkąt oraz od prędkości wiatru. Obliczając iloczyn wektorowy otrzymamy wektor normalny do powierzchni trójkąta i o długości proporcjonalnej do pola powierzchni trójkąta. Obliczenie siły wiatru przebiega więc następująco: dla wszystkich trojkatow: sila = normalny.normuj() * (normalny * wiatr) gdzie sila wypadkowa siła wiatru działająca na wszystkie punkty trójkąta, normalny wektor normalny trójkąta, normuj() daje w wyniku wektor o długości jeden, wiatr wektor wyznaczający kierunek oraz siłę wiatru. 6 Wnioski Przedstawiony w pracy model nadaje się doskonale do symulowania materiałów typu tkanina, jeżeli interesuje nas tylko efekt wizualny. Efekty tego typu potrzebne są np. w trakcie realizacji filmów animowanych czy też gier komputerowych. Podczas dalszych prac nad modelem zostaną wprowadzone następujące ulepszenia: 1. uwzględniony zostanie ruch obiektów, a więc np. przemieszczający się jak maszt flagi, ruchoma sfera kolizji, uwalnianie punktów zaczepu; 2. uwzględniona zostanie grubość tkaniny i związana z tym możliwość realizacji efektów odkształcenia plastycznego, np. ślady stóp na podłożu; 3. zastosowane zostaną dokładniejsze i szybsze algorytmy numeryczne w celu polepszenia jakości obliczeń. Kolejnym wyzwaniem jest symulacja ruchu ubrania na przemieszczającym się obiekcie. Przedstawiona praca może znaleźć dobre zastosowanie w nauczaniu symulacji komputerowej, gdyż pokazuje jak można stosunkowo prostymi metodami wykorzystując powszechnie znane prawa fizyki oddać w komputerze naturalne zachowanie się obiektów. Literatura 1. M. Matyka, Symulacje komputerowe w fizyce, Helion, 2002 2. D.M. Bourg, Fizyka dla programistów gier, Helion, 2003 3. Modeling and Simulation, G.A. Bekey & B.Y. Kogan (Eds.), Kluwer, 2003 10