simulacija fizickih interakcija u 2d prostoru...centara bude manja od zbira njihovih poluprecnikaˇ...
TRANSCRIPT
Simulacija fizickih interakcija u 2D prostoru
David Davidovic
Matematicka gimnazijaNEDELJA4
INFORMATIKE
29. mart 2018.
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Ukratko o simulaciji fizike
I Simulacija fizickih zakona racunarski je izuzetno velikaoblast
I U grubim crtama, ove simulacije se dele naI Naucne, u kojima je numericka tacnost najbitnija, i koje se
koriste u prakticnoj fizici, iI Interaktivne, u kojima je najvažnije održati interaktivnost
simulacije, i koje se najcešce koriste u video igramaI Tokom ovog predavanja proci cemo kroz osnovne korake
koji su neophodni za kreiranje interaktivne simulacije fizikeu 2D prostoru
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Cilj: Sistem kuglica
I Želimo da napravimo simulaciju sudarajucih, identicnihloptica na koje deluje gravitacija, ignorišuci ugaonokretanje
I Loptice su predstavljene kao krugovi u ravni identicnihpoluprecnika
I Želimo da omogucimo lopticama da se sudaraju i odbijajumedusobno
I Želimo da na loptice deluje gravitacijaI Ne želimo da implementiramo ugaono kretanje (spin)
loptica, pa cemo taj fenomen ignorisati
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Moguca upotreba
I Ovako simuliran sistem loptica se sam po sebi možekoristiti kao aproksimacija fluida
I Uz ispravno iscrtavanje rezultati mogu biti vrlo realniI Generalnije: uz dodatke nekih bitnih elemenata (kao npr.
drugih oblika sem krugova, podrška za momente impulsa iugaono kretanje), ovaj sistem se može koristiti kaojednostavan fizicki engine za 2D video igru
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Šta je stanje naše simulacije?
I Pre nego što pocnemo diskusiju o algoritmima koje cemokoristiti, moramo se složiti oko toga šta definiše stanjenaše simulacije
I S obzirom na to da ovu simulaciju možemo izvesti bezpojma impulsa, ignorisacemo ga sada
I Neka imamo n loptica. Tada, svaka loptica posedujesledece parametre:
I ~pi – pozicija. Poziciju predstavljamo kao vektor ~pi = (x, y)gde su x i y koordinate loptice.
I ~vi – brzina.I ~ai – ubrzanje.I mi – masa.
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Šta je stanje naše simulacije?
I U našem slucaju, ~ai je uvek konstantno i usmereno je kadole (gravitacija); nemamo drugog ubrzanog kretanja semtoga
I Celokupno stanje naše simulacije je, onda, skup stanjasvih loptica
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Šta je korak naše simulacije?
I Pošto je naša simulacija interaktivna, ona ce se izvršavatiu diskretnim koracima (frejmovima)
I U svakom frejmu, cilj je da na osnovu trenutnog stanja utrenutku t i nekog datog vremena ∆t izracunamo stanje utrenutku t+ ∆t — ovo se zove “korak” simulacije
I Podkoraci koji su nam neophodni za jedan “korak” su:I Integracija. Na osnovu ubrzanja, racunamo novu brzinu, a
na osnovu brzine, racunamo novu pozicijuI Detekcija sudara. Pronalazimo sve parove loptica koje se
preklapaju (odnosno, sudarile su se).I Simulacija sudara. Racunamo nove vrednosti za stanje
svih loptica koje su se sudarile.
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Iscrtavanje i interaktivnost
I Simulacija ne vredi mnogo ukoliko ne možemo da jevidimo!
I Uz interaktivnu simulaciju fizike uvek postoji i interaktivnoiscrtavanje trenutnog stanja, uz mogucnost uticanja nascenu pomocu nekog ulaza
I Moramo obezbediti harmonican odnos izmedu iscrtavanjascene i simulacije, pa cemo se ukratko pozabaviti i time
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Integracija: šta želimo da postignemo?
I Potrebna nam je procedura kojom cemo, na osnovuparametara ~vt, ~at i ~pt i datog ∆t izracunati parametre~vt+∆t, ~at+∆t, i ~pt+∆t
I Iako ovo deluje jednostavno, postoje odredeni problemikojih moramo da budemo svesni
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Naivni pristup: Ojlerova integracija
I Ojlerova integracija je intuitivna metoda koja odmah padana pamet kada je u pitanju ovaj problem:
I loptica.x += loptica.v * dtI loptica.v += loptica.a * dtI Ovo se zove eksplicitna Ojlerova integracija.
I Bolja tacnost bi se dobila kada bi se novoizracunata brzinakoristila za izracunavanje nove pozicije:
I loptica.v += loptica.a * dtI loptica.x += loptica.v * dtI Ovo se zove polu-implicitna ili simplekticka Ojlerova
integracija.
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Problem sa Ojlerovom integracijom
I Tokom jednog ∆t, brzina nije konstantna, jer ubrzanje uticena nju!
I Uprkos tome, prilikom Ojlerove integracije, mi je tretiramokao da jeste, jer za ceo korak dužine ∆t koristimo jednuvrednost za brzinu
I Zbog ovakvog pristupa, naša simulacija vremenomodstupa od idealnih vrednosti
I Ovo može, ali ne mora biti problem — sve zavisi od dužinetipicnog ∆t i reda velicine vrednosti sa kojima radimo
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Bolji pristup: RK4
I RK4, skraceno od Runge–Kutta metod cetvrtog reda, jemetod integracije koji uzima u obzir vrednost izvodafunkcije u razlicitim trenucima tokom jednog koraka
I U našem slucaju, izvod funkcije pozicije je funkcija brzineI Predstavimo stanje loptice kao S i definišemo funkcijua(t, S) kao ubrzanje u trenutku t za stanje S.
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
RK4 integracija
I Izracunajmo, sada, sledece koeficijente:
k1 = a(t, S) (1)
k2 = a(t+∆t
2, S + ∆t
k1
2) (2)
k3 = a(t+∆t
2, S + ∆t
k2
2) (3)
k4 = a(t+ ∆t, S + ∆tk3) (4)
I Tada preciznu vrednost stanja nakon koraka, S′, možemodobiti kao:
S′ = S +∆t
6(k1 + 2k2 + 2k3 + k4)
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Zašto je važna efikasna detekcija sudara?
I U ovako simuliranom fizickom sistemu se može dogoditiveliki broj sudara u jednom frejmu
I Ukupan broj sudara je, u najgorem slucaju, O(n2)
I Ipak, u vecini slucajeva, broj sudara u svakom frejmu cebiti dosta niži od teoretskog maksimuma
I Kako sistem mora biti interaktivan, ne sme se previševremena utrošiti na utvrdivanje koji se objekti medusobnosudaraju
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Preklapanje dva kruga
I Kako bismo proverili bilo kojisudar, moramo da znamo nacinda proverimo da li se dva krugaseku
I Na slici možemo videti da jepotreban i dovoljan uslov za ovoda razdaljina izmedu njihovihcentara bude manja od zbiranjihovih poluprecnika
I Formalno, za loptice sapozicijama ~p1 i ~p2 ipoluprecnicima r1 i r2
respektivno, presek postoji ako isamo ako važi |~p1 − ~p2| < r1 + r2
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Prvi pokušaj: svaki-sa-svakim
I Logicna ideja je da prodemo kroz sve moguce paroveloptica i proverimo seku li se
I Složenost ovog pristupa je O(n2)
I U vecini slucajeva, ovo je više nego zadovoljavajuce vremeI Ipak, ukoliko postoji mnogo loptica (n je veliko), potrebno je
iskoristiti malo prefinjeniji pristup kako bismo dobilizaodovoljavajuce performanse
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Bolji pristup: Quadtree
I Quadtree je struktura podataka, korisna za podatke uprostoru (baš kao što su naši), koja omogucava efikasnoubacivanje i brisanje, kao i odgovore na upit “sa kojimobjektima se dati objekat može seci?”
I Quadtree radi tako što rekurzivno particioniše ravan u 4kvadranta, sve dok kvadranti ne budu dovoljno mali (manjiod neke predefinisane, konfigurabilne velicine)
I Ovako dobijena struktura je stablo — loptice se moguubaciti u cvorove ovog stabla u zavisnosti od toga gde seprostorno nalaze
I Tada, loptica A ce moci da se sudara samo sa lopticamakoje se nalaze u cvorovima za kvadrante unutar kojih se Analazi
I Visina ovakvog stabla raste logaritamski sa prostorom uravni koji obuhvata
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Bolji pristup: Quadtree
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Quadtree: Insert
I Operaciju ubacivanja loptice A u stablo možemo definisatirekurzivno
I Neka svaki cvor quadtree-a sadrži B, pravougaonik oblasti,i L, listu loptica koje su pridružene njemu
I Kada se ubacuje loptica u cvor, proveravaju se B vrednostiza sva 4 deteta cvora. (Ukoliko cvor nema dece, u pitanjuje list, pa se u njegovo L samo ubacuje A i algoritam jegotov.) Razlikujemo dva disjunktna slucaja:
I Loptica je u potpunosti sadržana u nekom od dece.Pozivamo funkciju rekurzivno za to dete.
I Loptica sece neku od pravih koje dele cvor na 4 dela.Loptica se dodaje u L trenutnog cvora i algoritam je gotov.
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Quadtree: Query
I Operaciju dobijanja skupa kandidata za sudar za lopticu Aiz stabla takode možemo definisati rekurzivno
I Kada se proveravaju kandidati za cvor i lopticu A,razlikujemo dva disjunktna slucaja:
I Ako je cvor list, rezultat je prazan skup u slucaju da A nedodiruje B tog cvora, ili L tog cvora u suprotnom.
I Ako cvor ima decu, rezultat je unija L tog cvora i vrednostifunkcije za sve cvorove decu cije B pravougaonike dodirujeA.
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Detekcija sudara pomocu quadtree-a
I Kako bismo detektovali sudare, prosto prolazimo kroz sveloptice i za svaku od njih vršimo query operaciju dadobijemo listu kandidata
I Kada imamo listu kandidata trenutnu lopticu Ai, izvršimotest secenja izmedu Ai i svih kandidata
I Kada neka loptica promeni poziciju, obrišemo je izquadtree-a i dodamo ponovo sa novom pozicijom
I Pod uslovom da je scena dinamicna, u proseku sve oveoperacije ce biti linearne u odnosu na visinu stabla
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Šta se dešava tokom sudara?
I Sa fizicke strane, ovo je veoma kompleksna interakcijaI ...ali, u svrhu jednostavnosti, pretpostavicemo da se
dešavaju samo elasticni sudari izmedu lopticaI Ovo nam omogucava da ne brinemo o raznim detaljima
neelasticnih sudara, i cini lakšim da ignorišemo ugaonokretanje
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Elasticni sudar u jednoj dimenziji
I Ukoliko se prisetimo zakona održanja impulsa i zakonaodržanja energije, možemo to iskoristiti za izvodenjeformuli koje diktiraju kako se brzine menjaju nakonelasticnog sudara
I Posmatrajmo dve loptice u jednoj dimenziji, masa m1 i m2
respektivno, koje su pre sudara imali brzine ~v1 i ~v2.Oznacimo sa ~v′1 i ~v′2 brzine ovih loptica nakon sudara
I Na osnovu istovetnosti ukupnog impulsa, imamo:
m1 ~v1 +m2 ~v2 = m1~v′1 +m2
~v′2
I Na osnovu istovetnosti ukupne kineticke enrgije, imamo:
m1v21
2+m2v
22
2=m1v
′21
2+m2v
′22
2
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Elasticni sudar u jednoj dimenziji
I Rešavanjem ovog sistema dobijamo jedino netrivijalnorešenje:
v′1 =v1(m1 −m2) + 2m2v2
m1 +m2(5)
v′2 =v2(m1 −m2) + 2m1v1
m1 +m2(6)
I Primetimo da se samo smerovi brzina menjaju, dok pravciostaju isti (zbog toga što posmatramo jednu dimenziju)
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Elasticni sudar u dve dimenzije
I Mozemo izracunati normalu itangentu na tacku preseka dvejuloptica (zahvaljujuci kružnomobliku koji smo odabrali, ovo jelako izvesti)
I Kada imamo normalu i tangentu,projektujemo brzine ~v1 i ~v2 nanjih, da dobijemo tangencijalne inormalne komponente za obe
I Nakon toga, samo simuliramojednodimenzionalni elasticnisudar po te dve ose!
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Zašto je stabilnost važna?
I Stabilnost se odnosi na otpor naše fizicke simulacije nagreške koje poticu od nesavršenih metoda simulacije, ilipredvidivost na globalnom nivou
I Postoje razne metode kojima možemo integrisati fizickikorak i iscrtavanje na ekranu, i svaka ima razlicitekarakteristike stabilnosti
I Stabilnost je bitna, na primer, kod multiplayer igara gde sefizika mora izvršavati lokalno, na racunarima igraca, alimora i ostati ažurna sa fizikom koju racuna server
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Prvi pokušaj: promenljiv korak
I Ovo je najjednostavniji pristup za sinhronizaciju iscrtanogstanja i fizickog stanja
I Sastoji se u tome da merimo koliko je vremena prošlo odprethodnog frejma i to koristimo kao ∆t za simulaciju:
t1 = current_time_seconds()while true:
t2 = current_time_seconds()dt = t2 - t1t1 = t2
step(state, dt)render(state)
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Problemi sa promenljivim korakom
I Simulacija je nepredvidiva — rezultati mogu da se izuzetnorazlikuju u zavisnosti od dužine koraka
I Na bržim mašinama, manje ∆t vrednosti ce biti korišceneeI Zbog ovoga, simulacija može da ima razlicit “osecaj” u
zavisnosti od brzine racunara na kome se pokreceI Ozbiljniji problem: ako su ∆t vrednosti dovoljno velike,
možemo imati, na primer, tela koja prolaze kroz druga telaili “eksplodiranje u beskonacnost”
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Bolji pristup: odvajanje fizike i iscrtavanja
I Glavni problem našeg prethodnog pokušaja je što naše ∆tzavisi od brzine iscrtavanja
I Novi pristup se sastoji u tome da fiksiramo ∆t kako bismoimali predvidivu simulaciju, i konzumiramo vreme ukomadima te velicine:
dt = 1.0 / 60.0a = 0.0t1 = current_time_seconds()while true:
t2 = current_time_seconds()a += t2 - t1t1 = t2
while a >= dt:step(state, dt)a -= dt
render(state)
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Bolji pristup: odvajanje fizike i iscrtavanja
I Ovaj pristup omogucava da imamo simulaciju koja je uvekista (deterministicka)
I Takode, zbog fiksiranog ∆t, simulacija je predvidivija ilakše se testira
I Jedini problem: šta da radimo sa vremenom koje namostaje u akumulatoru a?
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Interpolacija
I Ukoliko vreme koje je potrebno da se iscrta frejm nije tacnodeljivo ∆t (a prakticno nikada nije), ostaje nam neko“nesimulirano” vreme na kraju svakog frejma
I Zbog ovoga, na ekranu možemo ponekad videtimilisekundske “zastoje” zbog razlike u broju ∆t koraka kojise svakog frejma izvršavaju
I Rešenje: interpolacija!
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Interpolacija
I Interpolacija, u ovom kontekstu, se odnosi nakombinovanje dva stanja, S i S′, na osnovu nekeinterpolacione konstante α ∈ [0, 1]
I Definišemo to kao funkciju f(S, S′, α)
I Ideja je da je vrednost funkcije za α = 0 jednaka S, zaα = 1 jednaka S′, a za ostale vrednosti je “kombinacija” tadva stanja
I Generalno, za pozicije loptica na ekranu, možemo koristitilinearnu interpolaciju: f(~p, ~p′, α) = α~p′ + (1− α)~p
Simulacija fizickih interakcija u 2D prostoru David Davidovic
Uvod Intergacija Detekcija sudara Sudari Iscrtavanje i interaktivnost
Interpolacija
I Na osnovu preostalog vremena u akumulatoru, možemointerpolirati izmedu prethodnog i trenutnog fizickog stanja
I Ako definišemo α = a∆t i interpoliramo izmedu prethodnog i
sledeceg stanja sa tim koeficijentom pre iscrtavanja,sredicemo diskontinuitet i “zastoje”:
dt = 1.0 / 60.0a = 0.0t1 = current_time_seconds()
while true:t2 = current_time_seconds()a += t2 - t1t1 = t2
while a >= dt:prevState = statestep(state, dt)a -= dt
alpha = a / dtrender(interpolate(prevState, state, alpha))
Simulacija fizickih interakcija u 2D prostoru David Davidovic