Naturlagar i cyberrymden VT 2006 Lektion 1 Naturlagar i cyberrymden Hur naturlagarna används för att skapa naturtrogna datorsimuleringar, virtuella världar och datorspel Dagens föreläsning Presentation Kursens upplägg och administration Introduktion till fysikbaserade datorsimuleringar Test för fysikdidaktisk forskning Introduktion till fysik Lite MATLAB Martin Servin Institutionen för fysik Umeå universitet Exempel Kursen Naturlagar i cyberrymden Introduktion till fysikbaserade datorsimuleringar Mål och innehåll Registrering Kurshemsidan Kompendium (100 kr) Schema och gästföreläsningar Tips Försäljning av kompendium 1
Olika typer av datorsimuleringar Vetenskapliga simuleringar VR Ingenjörssimuleringar Datorspel och film Vilka naturlagar? Svar: rörelselagar Rörelselagarna beskriver hur våra objekt utvecklas med tiden; hur objektens position, hastighet osv. förändras givet de krafter som finns närvarande. Dessa uttrycks normalt som ordinära differentialekvationer, t.ex x (t)=f(t) Varför simulera naturlagarna? Hur implementeras naturlagarna i datorprogram? Svar: för realism (samt praktiskt) Datorsimuleringar i forskning och teknisk utveckling: realism självklart mål. I upplevelseindustrin: uppenbart ofysikaliska förlopp sticker i ögonen på betraktaren. Mer verklighetstrogna förlopp förhöjer närvarokänslan. Svar: via tangentbordet och detta är vad vi ska ägna resten av kursen åt! 2
Fysikmotor Simuleringsloopen Naturlagarna kommer in i ett program genom en s.k. fysikmotor. En fysikmotor är ett kodbibliotek som kombineras med rutiner för visualisering, interaktion, AI osv Fysikmotorn hanterar hur simuleringsvärlden (med dess allas objekt) utvecklas med tiden. Vortex, ODE, Havok, Meqon, Novodex, Fysikmotor? Initialisering av värld och objekt Kraftberäkning ( yttre krafter) Hantering av tvång Hantering av kollisioner Kollisions-detektion Kollisions-respons Numerisk ekvationsslösare (stega fram i tiden) Visualisering Efteranalys Introduktion till fysik Vad är fysik? Två perpsektiv: fundamentala teorier och praktiskt fungerande modeller för klass av fenomen Partikelfysik Atomfysik Vätskedynamik Stela kroppar Allomfattande teori? Specialfall Vätskedynamik Atomfysik Stela kroppar Mer generell Hur använda fysiken i simuleringar? Djungel av formler att känna till och behärska? De grundläggande naturlagarna är (relativt) få! Övriga formler är specialfall (och definitioner). I simuleringar behöver endast (grovt sett) de grundläggande naturlagarna implementeras. Resten av fysiken följer då automatiskt. Välj teori/modell som är tillräckligt, men inte onödigt, generell. 3
Klassisk mekanik Rörelse (kinematik) Krafter Dynamik = rörelse+krafter Lägesvektor: Hastighetsvektor: Accelerationsvektor: Rörelse r(t)=[x(t),y(t),z(t)] v(t)=[v x (t),v y (t),v z (t)] a(t)=[a x (t),a y (t),a z (t)] x z r(t) a(t) y v(t) d v = r dt d a = v dt Accelerationen anger hur hastigheten förändras i storlek och riktning. Källan till hastighetsförändringar är krafter. Krafter Objekt Gravitation mm F = G r 2 Fjäder F = kd ( x) Friktion F f v F Glidfriktion Ff = µ F m F M x d F l Nära jordytan v m F Fl Luftmotstånd d F mg = Cv n M g = G r 2 Jord x F Punktmassor Saknar utsträckning. Rotation irrelevant. Vanligt att approximera andra objekt med punktmassor. Kraft påverkar hastigheten. Stela kroppar Har utsträckning och kan rotera. Kraft påverkar hastigheten och rotationshastigheten. Elastiska strängar, membran och kroppar Har utsträckning, kan rotera samt är elastisk. Kraft påverkar hastigheten, rotationshastigheten och svängningar. Vätskor Som elastiska objekt fast med full rörlighet. Mer krävande numerisk kod 4
Naturlagarna i klassisk mekanik Rörelselagar m a= F Newtons rörelselag Iα = M Konserveringslagar ptot = 0 Ltot = 0 E = 0 tot Rörelselag för rotation Bevarande av rörelsemängd (p=mv) Bevarande av rörelsemängdsmoment (L=Iw) Bevarande av energi MATLAB Introduktion: miljön, datatyper, vanliga operationer och kommandon. Programmering Tips Grafik C-MEX funktioner Kraft och motkraft F 1 F 2 F2 = -F 1 MATLAB-miljön Exempel på inmatningar >> 1/3 ; Beräkning ans= 0.3333 >> A=3*ans ; Tilldelning A= 1 >> x=[1,2,3,4,5]; ; Vektor >> x*x ; Vektorprodukt ans= 55 5
Matriser i MATLAB Matriser kan byggas upp term för term eller genereras med matrisbyggande funktioner >> A=[ 1 2 3; 4 5 6] ; Skapa matris A= 1 2 3 3 5 6 >> A(2,3)=-6 ; Ändra i matris A= 1 2 3 3 5-6 En vektor är en matris med dimension (1,n) eller (n,1). En skalär är en matris med dimension (1,1). Dessa behandlas inte annorlunda av MATLAB än andra matriser. Operationer och funktioner Matrisoperationer + - * / \ ^. Matrisfunktioner inv(m), det(m), size(m), Skalärfunktioner (verkar enskilt på varje element) sqrt(m), sin(m), exp(m), Matrisbyggande funktioner, t.ex. kolon-operatorn >> A=[ 0:0.5:2] ; Bygg upp vektor A= 0.0 0.5 1.0 1.5 2.0 Plot Hur en plot är uppbyggd Hur en plot skapas i MATLAB y(x) = >> x=[0:0.01:3*pi]; >> y=sin(x.^2)./(1+x); >> plot(x,y) sin(x 2 ) 1+ x Programmering Spara följande som minfunktion.m function y=minfunktion(a,b) tmp=a/b; y=tmp^2; >> minfunktion(3,4) ans= 0.5625 Se kompendium för syntaxering av if-satser, for-slingor och while-loopar. Men för snabbare kod ersätt loopar med matris operationer. 6
Smart val av datatyper Om du har flera lika objekt, tex bollar Skapa inte en variabel för varje objetk, tex boll1_x=[1,0,1]; boll2_x=[1,0,2]; Välj smarta datatyper som gör det lätt att ändra antalet objekt och deras egenskaper. Lagra objektens variabler i matriser Lagra i struct Matrislagring av position, hastighet och radie: X dim (3,N) V dim (3,N) R dim (1,N) Struct-lagring av position, hastighet och radie: BOLL en strukt med N slots BOLL(n).x positionsvektor för boll n, dim (3,1) BOLL(n).v hastighetsvektor för boll n, dim (3,1) BOLL(n).radie radie för boll n, dim (1,1) Matrislagring ger snabbare beräkningar Struct-lagring ger tydligare och mer strukturerad kod Grafik Se exempel grafik.m Låt MATLAB sköta uppdateringen av grafikfönstret genom att tilldela handles till grafikobjekten Uppdatera objekten med set Exempel: H=plot(1,1); set(h, erasemode, xor ) axis([0,0,3,5]) daspect([1,1,1]) hold on set(h, XData,2, YData,4) Kommandon: line, rectangle % Plot med handtag H % Egenskap vid utritning % Figurens axlar % Skala axlar lika % Lås fast inställningar % Uppdatera objektets % position 3D Grafik Se exempel moving_spehers.m 7
C-MEX funktioner MATLAB ofta långsamt Med C-MEX funktioner kan beräkningstunga rutiner utföras med C-kod MEX-funktionen kompileras i MATLAB Resultatet är en dll-fil (mexglx i Linux) som anropas i MATLAB- koden som en M-fil. MATLAB-funktion function y=timestwo(x) y=2*x; C-MEX funktion # include mex.h void timestwo(double y[], double x[]) { y[0]=2.0*x[0]; } Exempel void mexfunction(int nlhs, mxarray *plhs[], int nrhs, const mxarray *prhs[]) { double *x,*y; plhs[0]=mxcreatedoublematrix(1,1,mxreal); x=mxgetpr(prhs[0]); y=mxgetpr(plhs[0]); timestwo(y,x); } Mål och innehåll att med kunskap om hur grundläggande naturlagar tillsammans med datorprogram används för att göra verklighetstrogna simuleringar grundläggande teori simuleras med datorprogram skrivna av studenter golfbollars rörelse hoppande föremål stela kroppars rörelse kollisioner hur programpaket kan användas för att simulera och grafiskt visualisera mer avancerade system 8
Tips Påbörja laborationerna i tid, svårighetsgraden ökar under kursen. Uppfinningsrikedom belönas. Dokumentera i rapporten! Att visa att naturlagarna är uppfyllda är viktigt. Dokumentera i rapporten! Börja laborationen med att skriva en algoritm. Skriv strukturerad kod med kommentarer. Exempel demo Besök gästföreläsningarna för att höra mer om hur kursens element används i verkligheten. 9