Symulacje komputerowe

Podobne dokumenty
Symulacje komputerowe

Algorytm SAT. Marek Zając Zabrania się rozpowszechniania całości lub fragmentów niniejszego tekstu bez podania nazwiska jego autora.

GEOMETRIA PRZESTRZENNA (STEREOMETRIA)

KMO2D. Kolizje między-obiektowe w 2D

MECHANIKA 2. Wykład Nr 3 KINEMATYKA. Temat RUCH PŁASKI BRYŁY MATERIALNEJ. Prowadzący: dr Krzysztof Polko

str 1 WYMAGANIA EDUKACYJNE ( ) - matematyka - poziom podstawowy Dariusz Drabczyk

Katalog wymagań programowych na poszczególne stopnie szkolne. Matematyka. Poznać, zrozumieć

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

Programowanie liniowe

1. Potęgi. Logarytmy. Funkcja wykładnicza

I. Potęgi. Logarytmy. Funkcja wykładnicza.

Tomasz Tobiasz PLAN WYNIKOWY (zakres podstawowy)

Matematyka z plusem dla szkoły ponadgimnazjalnej. ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy)

Agnieszka Kamińska, Dorota Ponczek. MATeMAtyka 3. Szczegółowe wymagania edukacyjne z matematyki w klasie trzeciej.

Prawdopodobieństwo czerwonych = = 0.33

Kryteria oceniania z matematyki Klasa III poziom podstawowy

MATeMAtyka 3 Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych

Geometria wykreślna. 5. Obroty i kłady. Rozwinięcie wielościanu. dr inż. arch. Anna Wancław. Politechnika Gdańska, Wydział Architektury

Wymagania edukacyjne z matematyki - klasa III (poziom rozszerzony) wg programu nauczania Matematyka Prosto do matury

PDM 3 zakres podstawowy i rozszerzony PSO

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

Wymagania edukacyjne z matematyki dla klasy III a,b liceum (poziom podstawowy) rok szkolny 2018/2019

Przedmiotowe Zasady Oceniania

Grafika inżynierska geometria wykreślna. 5a. Obroty i kłady. Rozwinięcie wielościanu.

2. Permutacje definicja permutacji definicja liczba permutacji zbioru n-elementowego

Uczeń otrzymuje ocenę dostateczną, jeśli opanował wiadomości i umiejętności konieczne na ocenę dopuszczającą oraz dodatkowo:

Plan wynikowy klasa 3

Plan wynikowy klasa 3. Zakres podstawowy

Wprowadzenie do UML, przykład użycia kolizja

w jednym kwadrat ziemia powietrze równoboczny pięciobok

WYMAGANIA EDUKACYJNE Z MATEMATYKI 2016/2017 (zakres podstawowy) klasa 3abc

Wymagania kl. 3. Zakres podstawowy i rozszerzony

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

Agnieszka Kamińska, Dorota Ponczek. MATeMAtyka 3. Plan wynikowy. Zakres podstawowy

Rozwiązania zadań. Arkusz Maturalny z matematyki nr 1 POZIOM ROZSZERZONY. Aby istniały dwa różne pierwiastki równania kwadratowego wyróżnik

PDM 3. Zakres podstawowy i rozszerzony. Plan wynikowy. STEREOMETRIA (22 godz.) W zakresie TREŚCI PODSTAWOWYCH uczeń potrafi:

Geometria wykreślna. 3. Równoległość. Prostopadłość. Transformacja celowa. dr inż. arch. Anna Wancław. Politechnika Gdańska, Wydział Architektury

Trójwymiarowa grafika komputerowa rzutowanie

Diagramy UML, przykład problemu kolizji

Elementy geometrii analitycznej w R 3

KRYTERIA OCEN Z MATEMATYKI DLA UCZNIÓW KL. II GIMNAZJUM

ZAKRES WYMAGAŃ Z MATEMATYKI DLA KLASY II GIMNAZJUM

Technikum Nr 2 im. gen. Mieczysława Smorawińskiego w Zespole Szkół Ekonomicznych w Kaliszu

Katalog wymagań programowych na poszczególne stopnie szkolne. Matematyka. Poznać, zrozumieć

V Konkurs Matematyczny Politechniki Białostockiej

Geometria w R 3. Iloczyn skalarny wektorów

PRZEDMIOTOWE ZASADY OCENIANIA I WYMAGANIA EDUKACYJNE Z MATEMATYKI Klasa 3

XII. GEOMETRIA PRZESTRZENNA GRANIASTOSŁUPY

Agnieszka Kamińska, Dorota Ponczek. MATeMAtyka 3. Plan wynikowy. Zakres podstawowy i rozszerzony

MATeMAtyka 3. Propozycja przedmiotowego systemu oceniania wraz z określeniem wymagań edukacyjnych. Zakres podstawowy i rozszerzony

Co należy zauważyć Rzuty punktu leżą na jednej prostej do osi rzutów x 12, którą nazywamy prostą odnoszącą Wysokość punktu jest odległością rzutu

DZIAŁ 1. STATYSTYKA DZIAŁ 2. FUNKCJE

PRZEDMIOTOWY SYSTEM OCENIANIA- MATEMATYKA KLASA 6. Rok szkolny 2012/2013. Tamara Kostencka

Animowana grafika 3D. Opracowanie: J. Kęsik.

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski

Geometria analityczna - przykłady

WYMAGANIA EDUKACYJNE NIEZBĘDNE DO UZYSKANIA POSZCZEGÓLNYCH ŚRÓDROCZNYCH I ROCZNYCH OCEN KLASYFIKACYJNYCH Z MATEMATYKI

GEOMETRIA ANALITYCZNA W PRZESTRZENI

Pytania do spr / Własności figur (płaskich i przestrzennych) (waga: 0,5 lub 0,3)

Wymagania edukacyjne z matematyki Klasa III zakres podstawowy

Wymagania edukacyjne z matematyki

Matematyka z plusem Wymagania programowe na poszczególne oceny dla klasy II. Szczegółowe kryteria oceniania po pierwszym półroczu klasy I:

Wymagania edukacyjne z matematyki dla klasy III gimnazjum

Krystalochemia białek 2016/2017

Plan wynikowy, klasa 3 ZSZ

ZAKRES PODSTAWOWY CZĘŚĆ II. Wyrażenia wymierne

Wymagania z matematyki na poszczególne oceny Klasa 2 gimnazjum

GEOMETRIA ANALITYCZNA W PRZESTRZENI

Klasa II POTĘGI. Na ocenę dobrą: umie porównać potęgi sprowadzając do tej samej podstawy

MATEMATYKA - WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY

Poziom wymagań K P K R K R. 2. Permutacje definicja permutacji definicja n! liczba permutacji zbioru n-elementowego K K K P D

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE II W PUBLICZNYM GIMNAZJUM NR 2 W ZESPOLE SZKÓŁ W RUDKACH

Przedmiotowe zasady oceniania i wymagania edukacyjne

ZESPÓŁ SZKÓŁ W OBRZYCKU

Wymagania edukacyjne z matematyki dla klasy II gimnazjum wg programu Matematyka z plusem

zajęcia 1. Bartosz Górski, Tomasz Kulczyński, Błażej Osiński

Kształcenie w zakresie rozszerzonym. Klasa IV

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

WYMAGANIA PROGRAMOWE Z MATEMATYKI KLASA II

ALGEBRA z GEOMETRIA, ANALITYCZNA,

Stereometria bryły. Wielościany. Wielościany foremne

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Młodzieżowe Uniwersytety Matematyczne. dr Michał Lorens

Wymagania z matematyki KLASA VII

Zadanie I. 2. Gdzie w przestrzeni usytuowane są punkty (w której ćwiartce leży dany punkt): F x E' E''

MECHANIKA 2 RUCH POSTĘPOWY I OBROTOWY CIAŁA SZTYWNEGO. Wykład Nr 2. Prowadzący: dr Krzysztof Polko

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

MAZOWIECKI PROGRAM STYPENDIALNY DLA UCZNIÓW SZCZEGÓLNIE UZDOLNIONYCH NAJLEPSZA INWESTYCJA W CZŁOWIEKA 2016/2017

SZCZEGÓŁOWY OPIS OSIĄGNIĘĆ NA POSZCZEGÓLNE OCENY MATEMATYKA KLASA DRUGA

Notacja Denavita-Hartenberga

Przedmiotowy system oceniania dla uczniów z obowiązkiem dostosowania wymagań edukacyjnych z matematyki w kl.ii

Grafika inżynierska geometria wykreślna. 4. Wielościany. Budowa. Przekroje.

Algorytm grupowania danych typu kwantyzacji wektorów

Czy pamiętasz? Zadanie 1. Rozpoznaj wśród poniższych brył ostrosłupy i graniastosłupy.

PRÓBNY EGZAMIN MATURALNY Z MATEMATYKI poziom rozszerzony

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE DRUGIEJ GIMNAZJUM

Przedmiotowy system oceniania z matematyki kl.ii

Wymagania na poszczególne oceny szkolne z. matematyki. dla uczniów klasy IIIa i IIIb. Gimnazjum im. Jana Pawła II w Mętowie. w roku szkolnym 2015/2016

Transkrypt:

Fizyka w modelowaniu i symulacjach komputerowych Jacek Matulewski (e-mail: jacek@fizyka.umk.pl) http://www.fizyka.umk.pl/~jacek/dydaktyka/modsym/ Symulacje komputerowe brył sztywnych Wersja: 15 kwietnia 2010

Plan 1. Wykrywanie zderzeo dowolnych brył, siatek (trójkąty) 2. Idee: otoczka wypukła, hierarchiczna dekompozycja 3. Obszary ograniczające: BS, AABB, OBB 4. Jak wykryd kolizję dwóch wypukłych brył sztywnych? 5. Wyznaczanie przekroju prostopadłościanów OBB 6. Wyznaczanie punktu styku oraz normalnej zderzenia 7. Metoda GJK 8. Reakcja na kolizję, czyli fizyka zderzenia brył sztywnych

Otoczka wypukła (ang. convex hull) = najmniejszy wypukły fragment przestrzeni obejmujący otaczany obiekt. Wyobrażenie: gumowy balon, który najpierw napompowujemy, następnie wkładamy do niego model i wreszcie spuszczamy powietrze. Większośd ogólnych metod, które pozwalają na znajdowanie odległości brył, ich przecięd itp. zakłada, że bryły są wypukłe. Algorytmy szukania - geometria obliczeniowa

Obszary ograniczające: BS, AABB, OBB Axis-Aligned Bounding Box Oriented Bounding Box

Hierarchiczna dekompozycja (na przykładzie BS)

Jak wykryd kolizję dwóch brył wypukłych? Twierdzenie SAT (separating axis theorem)

Oś rozdzielenia (oś na której widad separację) Kolizja gdy rzut odległości środków mas na jakąś oś jest mniejszy od sumy połówek rzutów całych brył na tę oś

Dwa główne typy kolizji wielościanów (siatki): wierzchołek-płaszczyzna krawędź-krawędź

Wzory dla dwóch prostopadłościanów: rzut środka prostopadłościanu na oś osiem wierzchołków (w układzie odniesienia modelu): rzuty wierzchołków na testowaną oś: wybór maks. i min. spośród ośmiu rzutów wierzch.

Wzory dla dwóch prostopadłościanów: ograniczenie ilości sprawdzanych osi (dla dwóch prostopadłościanów 15 osi): Ax, Ay, Az, Bx, By, Bz - wierzchołek-płaszczyzna (osie prostopadłe do uderzanych ścian wielościanu) Ax x Bx, Ax x By, Ax x Bz, itd. - krawędź-krawędź (osie prostopadłe do obu krawędzi obu wielościanów)

Twierdzenie SAT stosowane jest w przypadku obszarów ograniczających OBB Testy AABB mogą byd rozumiane jako szczególny przypadek twierdzenia SAT (tylko trzy osie)

Naiwna (czytelna) implementacja SAT dla OBB: void ObliczRzutProstopadloscianuNaProsta(Prostopadloscian* p,wektor n,double& min, double& max,bool nastepnepolozenie) const { Macierz macierzobrotu; if(!nastepnepolozenie) macierzobrotu=p->macierzobrotu(); else macierzobrotu=p->nastepnamacierzobrotu(); Wektor osx=macierzobrotu.kolumnax(); Wektor osy=macierzobrotu.kolumnay(); Wektor osz=macierzobrotu.kolumnaz(); } Wektor polowarozmiaru=p->rozmiar()/2; double polowadlugoscirzutu = polowarozmiaru.x*fabs(n*osx)+polowarozmiaru.y*fabs(n*osy)+polowarozmiaru.z*fabs(n*osz); double rzutsrodkamasy; if(!nastepnepolozenie) rzutsrodkamasy=n*p->polozeniesrodkamasy(); else rzutsrodkamasy=n*p->nastepnepolozeniesrodkamasy(); min=rzutsrodkamasy-polowadlugoscirzutu; max=rzutsrodkamasy+polowadlugoscirzutu; bool CzyOdcinkiNaProstejPokrywajaSie(double mina,double maxa,double minb,double maxb) const { return!((maxa < minb) (mina > maxb)); }

Naiwna (czytelna) implementacja SAT dla OBB: bool CzyRzutyProstopadloscianowNaOsNakladajaSie(Wektor n,prostopadloscian* pa,prostopadloscian* pb,bool nastepnepolozenie) const { double mina,maxa,minb,maxb; ObliczRzutProstopadloscianuNaProsta(pA,n,minA,maxA,nastepnePolozenie); ObliczRzutProstopadloscianuNaProsta(pB,n,minB,maxB,nastepnePolozenie); return CzyOdcinkiNaProstejPokrywajaSie(minA,maxA,minB,maxB); }

Naiwna (czytelna) implementacja SAT dla OBB: Wektor OsRzutowania(int indeks,prostopadloscian* pa,prostopadloscian* pb, bool nastepnepolozenie) const { Macierz macierzobrotua,macierzobrotub; if(!nastepnepolozenie) { macierzobrotua=pa->macierzobrotu(); macierzobrotub=pb->macierzobrotu(); } else { macierzobrotua=pa->nastepnamacierzobrotu(); macierzobrotub=pb->nastepnamacierzobrotu(); } } switch(indeks) {... }

Naiwna (czytelna) implementacja SAT dla OBB: Wektor OsRzutowania(int indeks,prostopadloscian* pa,prostopadloscian* pb, bool nastepnepolozenie) const {... } switch(indeks) { //A case 1: return macierzobrotua.kolumnax(); break; case 2: return macierzobrotua.kolumnay(); break; case 3: return macierzobrotua.kolumnaz(); break; //B case 4: return macierzobrotub.kolumnax(); break; case 5: return macierzobrotub.kolumnay(); break; case 6: return macierzobrotub.kolumnaz(); break; //iloczyny wektorowe AxB case 7: return macierzobrotua.kolumnax()^macierzobrotub.kolumnax(); break; case 8: return macierzobrotua.kolumnax()^macierzobrotub.kolumnay(); break; case 9: return macierzobrotua.kolumnax()^macierzobrotub.kolumnaz(); break; case 10: return macierzobrotua.kolumnay()^macierzobrotub.kolumnax(); break;... case 15: return macierzobrotua.kolumnaz()^macierzobrotub.kolumnaz(); break; default: return Wektor::Zero(); break; }

Naiwna (czytelna) implementacja SAT dla OBB: bool TestNakrywaniaDwochProstopadloscianow(Prostopadloscian* pa,prostopadloscian* pb,bool nastepnepolozenie) const { for(int i=1;i<=15;++i) if(!czyrzutyprostopadloscianownaosnakladajasie( OsRzutowania(i,pA,pB, nastepnepolozenie).unormowany(),pa,pb), nastepnepolozenie) return false; return true; }

Optymalizacje przeprowadzenie testów w układzie lokalnym A rozpisanie 15 konkretnych przypadków, co pozwala na uniknięcie wielu niepotrzebnych obliczeo

Optymalizacje Zaczynamy od pytania o to, czy długośd połowy rzutów obu prostopadłościanów jest mniejsza od odległości środków tych prostopadłościanów? połowy długości rzutów prostopadłościanów A i B na oś

Optymalizacje Jeżeli te wielkości wyrazimy we współrzędnych układu lokalnego związanego z prostopadł. A: to wektor wyznaczający oś rzutowania w układzie współrzędnych związanym z bryłą A

Optymalizacje Korzyści z tego podejścia zobaczymy, gdy za oś wstawimy konkretny wektor np. Elementy macierzy transformacji (obrotu) układu A do układu B, czyli elementy macierzy obrotu bryły B w lokalnym układzie odniesienia bryły A.

Optymalizacje Ostatecznie test separacji względem osi Ax przyjmie następującą postad: Dla osi Bx:

Optymalizacje Dla osi Ax x Bx równej otrzymamy test postaci: Wyprowadzenie (nie do kooca banalne) w domu! implementacja (zazwyczaj poprzedzone testem BS) kolejnośd testów: prawdopodobieostwo spełnienia

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? W przypadku wielościanów można użyd metody V-clip (Briana Mitrich). Rozpoczyna się od podziału przestrzeni wokół wielościanu na obszary. Każdy z obszarów w tym podziale składa się z punktów, które są bliżej jednego wierzchołka, krawędzi lub ściany niż innych. Dwuwymiarowy analog tego problemu nazywany jest teselacją Woronoja i prowadzi do słynnego diagramu Woronoja. W detekcji kolizji fakt, że do jednego obszaru należą punkty bliższe jednemu elementowi wielościanu niż innym, ma istotne znaczenie i jest podstawą wydajności tego algorytmu, pozwalając na zastąpienie operacji na elementach wielościanu operacjami na związanych z nimi obszarach.

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? Najbardziej poprawną odpowiedź daje iteracyjna metoda GJK (Gilberta, Johnsona i Keerthi). Dla brył wypukłych. dla których umiemy zdefiniowad tzw. funkcję odwzorowania wspierającego (ang. support mapping function), zwracającą punkt siatki modelu, który jest najbardziej wysunięty we wskazanym w jej argumencie kierunku. Algorytm rozpoczyna się, przynajmniej formalnie, od wyznaczenia tzw. różnicy Minkowskiego siatek dwóch modeli, których kolizja jest brana pod uwagę. Różnica Minkowskiego to zbiór wszystkich wektorowych różnic położeo punktów z obu siatek. Modele nakładają się na siebie, jeżeli w ich różnicy Minkowskiego znajduje się punkt bliski początkowi układu współrzędnych.

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? Po wyznaczeniu różnicy Minkowskiego tworzymy bryłę opisaną na maksymalnie czterech dowolnie wybranych jej punktach. Następnie korzystając ze wspomnianej przed chwilą funkcji, szukamy punktu P należącego do nowego obszaru (niekoniecznie jego wierzchołka), który jest najbliżej początku układu współrzędnych. Jeżeli ten punkt znajduje się w początku układu współrzędnych - znaleźliśmy punkt styku. W przeciwnym razie redukujemy obszar do odcinka lub trójkąta, na którym znajduje się znaleziony przed chwilą punkt P. Jak widad w obliczeniach nie ma potrzeby wyznaczania całej różnicy Minkowskiego. Potrzebujemy tylko czterech jej punktów i tylko te punkty obliczamy korzystając z funkcji odwzorowania wspierającego (wydajnośd!).

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? W następnym kroku szukamy wierzchołka modelu, który jest najbardziej odległy od punktu P. Jeżeli jego odległośd od początku układu współrzędnych jest taka sama, jak punktu P, to znaczy, że nowy wierzchołek odpowiada różnicy dwóch najbliższych siebie punktów z obu siatek. To jest punkt styku. Jeżeli tak nie jest, włączamy nowy wierzchołek do podobszaru i powstaje nowy obszar (trójkąt lub czworościan), w którym szukamy punktu najbliższego początkowi układu współrzędnych. To rozpoczyna drugą iterację algorytmu.

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? wyznaczona wyznaczenie została konstrukcja punktu otoczka kolejnego Ppodzbioru najbliższego obszaru wierzchołków początkowi i wyznaczenie obiektu układu następnego współrzędnych punktu P

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? Wydobywanie punktu styku i normalnej z twierdzenia SAT: Normalną zderzenia można ustalid śledząc zmiany, jakie następują wzdłuż każdej z piętnastu osi separacji. Należy ustalid, w którym kierunku nakrywanie pojawiło się jako ostatnie. Ta oś będzie wskazywała normalną.

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? W praktyce sytuacja jest bardziej skomplikowana ze względu na kwantyzację czasu w symulacjach. Zazwyczaj tuż przed zderzeniem to nie jedna, ale dwie osie pokazują separację. Typową sytuacją jest, że jedna z osi odpowiada zderzeniu typu wierzchołek-ściana, a druga krawędźkrawędź. W tej sytuacji trzeba rozstrzygnąd, na której osi przy ciągłym upływie czasu separacja zniknęłaby później. Możemy to zrobid, obliczając odległości rzutów prostopadłościanów na poszczególne osie tuż przed i tuż po zderzeniu. Czas, jaki upłynął od początku kroku do chwili zetknięcia można obliczyd zakładając, że w przybliżeniu zmiana ta zachodzi z jednakową prędkością. Jeżeli na jednej z osi doszło do zderzenia, to odległośd rzutów tuż po zderzeniu jest ujemna. Jej wartośd bezwzględna jest wówczas nazywana głębokością penetracji.

Jak znaleźd punkt styku i normalną zderzenia (linię akcji), czyli układ odniesienia zderzenia? Punkt styku: Tu pojawia się problem odległości dwóch prostych