Inledning. Kapitel 1. 1.1 Bakgrund. 1.2 Syfte



Relevanta dokument
Gel esimulering 22 mars 2008

Byggnationen av Cheopspyramiden - ett visualiseringsprojekt. Mathias Bergqvist, Rikard Gehlin, Henrik Gunnarsson

Två gränsfall en fallstudie

Matematisk analys för ingenjörer Matlabövning 3 Numerisk lösning av differentialekvationer

Ordinära differentialekvationer,

TNM085 MODELLERINGSPROJEKT FLYGSIMULATOR. Albin Törnqvist, Emil Rydkvist, Oskar Krantz 15 mars Linköpings Tekniska Högskola

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet april

Laboration 1 i SF1544: Öva på Matlab och konstruera en optimal balk Avsikten med denna laboration är att:

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

Inlämningsuppgift 4 NUM131

Föreläsning 17: Jämviktsläge för flexibla system

Föreläsning 2,dynamik. Partikeldynamik handlar om hur krafter påverkar partiklar.

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

TANA17 Matematiska beräkningar med Matlab

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

Tentamen: Baskurs B i Fysik, del1, 4p kl

Obligatoriska uppgifter i MATLAB

SF1669 Matematisk och numerisk analys II Bedömningskriterier till tentamen Torsdagen den 4 juni 2015

Vågrörelselära och optik

Tentamen i Teknisk-Vetenskapliga Beräkningar

Vetenskapsdagen 2016 SciLab för laborativa inslag i matematik eller fysik

TAIU07 Matematiska beräkningar med Matlab

Laboration 4 Mekanik baskurs

KOMIHÅG 12: Ekvation för fri dämpad svängning: x + 2"# n

Numerisk lösning till den tidsberoende Schrödingerekvationen.

LÖSNINGAR TENTAMEN MEKANIK II 1FA102

II. Partikelkinetik {RK 5,6,7}

Kapitel 4 Arbete, energi och effekt

Moment 4.11 Viktiga exempel 4.32, 4.33 Övningsuppgifter Ö4.18-Ö4.22, Ö4.30-Ö4.34. Planet Ett plan i rummet är bestämt då

P Q = ( 2, 1, 1), P R = (0, 1, 0) och QR = (2, 2, 1). arean = 1 2 P Q P R

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

Grundläggande om krafter och kraftmoment

Projekt: Filmat tornfall med modell av tornet. Benjamin Tayehanpour, Adrian Kuryatko Mihai

Laboration 2 Mekanik baskurs

Omtentamen i DV & TDV

Veckoblad 1, Linjär algebra IT, VT2010

Simulering och rendering av gräs och vind i realtid

LABORATIONSHÄFTE NUMERISKA METODER GRUNDKURS 1, 2D1210 LÄSÅRET 03/04. Laboration 3 3. Torsionssvängningar i en drivaxel

Bose-Einsteinkondensation. Lars Gislén, Malin Sjödahl, Patrik Sahlin

Mekanik FK2002m. Kinetisk energi och arbete

Mer Friktion jämviktsvillkor

Målsättningar Proffesionell kunskap. Kunna hänvisa till lagar och definitioner. Tydlighet och enhetliga beteckningar.

Introduktion till Biomekanik - Statik VT 2006

3. Om ett objekt accelereras mot en punkt kommer det alltid närmare den punkten.

TNM087 - MoS Projekt Group 7 - ICE ICE BABY

GÖTEBORGS UNIVERSITET Institutionen för fysik LÖSNINGAR TILL TENTAMEN I MEKANIK B För FYP100, Fysikprogrammet termin 2

SKRIVNING I VEKTORGEOMETRI

Vi har väl alla stått på en matta på golvet och sedan hastigt försökt förflytta

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

Tentamen i Mekanik 5C1107, baskurs S2. Problemtentamen

MMA132: Laboration 2 Matriser i MATLAB

Inlämningsuppgift 1. 1/ Figuren visar ett energischema för Ulla som går uppför en trappa. I detta fall sker en omvandling av energi i Ullas muskler.

Sammanfattning av föreläsning 11. Modellbygge & Simulering, TSRT62. Föreläsning 12. Simulering. Föreläsning 12. Numeriska metoder och Simulering

f(x + h) f(x) h f(x) f(x h) h

Laboration 1 Mekanik baskurs

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

TANA81: Simuleringar med Matlab

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

Linjära system av differentialekvationer

Numeriska metoder, grundkurs II. Dagens program. Gyllenesnittminimering, exempel Gyllenesnittetminimering. Övningsgrupp 1

Välkomna till TSRT15 Reglerteknik Föreläsning 2

14. Elektriska fält (sähkökenttä)

6 Derivata och grafer

Övningar till datorintroduktion

Övningsuppgifter till Originintroduktion

SF1545 Laboration 1 (2015): Optimalt sparande

E-II. Diffraktion på grund av ytspänningsvågor på vatten

Begrepp:: Kort om Kryssprodukt

Kravspecifikation TDP005 Projekt: Objektorienterat system

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht Block 5, översikt

Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund

Lösningar Kap 11 Kraft och rörelse

SG1108 Tillämpad fysik, mekanik för ME1 (7,5 hp)

FFM234, Datoruppgift 2: Värmeledning

Laboration 1: Optimalt sparande

Vektorgeometri för gymnasister

" e n Föreläsning 3: Typiska partikelrörelser och accelerationsriktningar

Välkomna till TSRT19 Reglerteknik Föreläsning 8. Sammanfattning av föreläsning 7 Framkoppling Den röda tråden!

UPPGIFTER KAPITEL 2 ÄNDRINGSKVOT OCH DERIVATA KAPITEL 3 DERIVERINGSREGLER

LÄRARHANDLEDNING Harmonisk svängningsrörelse

(Eftersom kraften p. g. a. jordens gravitation är lite jämfört med inbromsningskraften kan du försumma gravitationen i din beräkning).

Tentamen i Mekanik SG1102, m. k OPEN m fl. Problemtentamen OBS: Inga hjälpmedel förutom rit- och skrivdon får användas!

e 3 e 2 e 1 Kapitel 3 Vektorer i planet och i rummet precis ett sätt skrivas v = x 1 e 1 + x 2 e 2

Datum: Författare: Olof Karis Hjälpmedel: Physics handbook. Beta Mathematics handbook. Pennor, linjal, miniräknare. Skrivtid: 5 timmar.

Problemtentamen. = (3,4,5)P, r 1. = (0,2,1)a F 2. = (0,0,0)a F 3. = (2,"3,4)P, r 2

Experimentella metoder, FK3001. Datorövning: Finn ett samband

Newtons 3:e lag: De par av krafter som uppstår tillsammans är av samma typ, men verkar på olika föremål.

Välkomna till Reglerteknik Föreläsning 2

17.10 Hydrodynamik: vattenflöden

Vi människor föds in i en tredimensionell värld som vi accepterar och

Planering för Matematik kurs E

SF1544 LABORATION 2 INTEGRATION, MONTE-CARLO OCH BLACK-SCHOLES EKVATION FÖR OPTIONER

Mekanik FK2002m. Kraft och rörelse I

Vektorgeometri för gymnasister

Repetion. Jonas Björnsson. 1. Lyft ut den/de intressanta kopp/kropparna från den verkliga världen

Numeriska metoder för ODE: Teori

Transkript:

Sammanfattning Vi har i kursen Modelleringsprojekt TNM085 valt att simulera ett geléobjekt i form av en kub. Denna består av masspunkter som är sammankopplade med tre olika typer av fjädrar med olika parametrar. Målet var att få simuleringen så realistisk som möjligt, detta genom att experimentellt ta fram värden på parametrarna till fjädrar och friktion. En kollisionsmodell har implementerats för att sätta in geléobjektet under mer realistiska förhållanden. Om man är vill göra en simulering som visar de grundläggande egenskaperna hos gelé är detta en bra modell. Simuleringen klarar att köras i realtid med en begränsning med ca 260 masspunkter vilket blir ca 2500 fjädrar för geléobjektet.

2

Innehåll 3

4

Kapitel 1 Inledning 1.1 Bakgrund Detta arbete är ett resultat av projektet i kursen Modelleringsprojekt TNM085, vårterminen 2008. Denna kurs baserar sig på den tidigare kursen Modellbygge och Simulering TNG022 där man lär sig att bygga en modell av ett fysikaliskt system. Eftersom vi läser civ. ing. medieteknik är det viktigt för oss att kunna implementera och åskådliggöra fysikaliska modeller i en grafisk representation. 1.2 Syfte Syftet med projektet är att simulera ett fysikaliskt system i form av ett geléobjekt samt visa det grafiskt. Detta ska ske i realtid på en modern dator. Projektet kommer även ge oss kunskaper om hur de teoretiska modellerna implementeras i en simulering. 5

6

Kapitel 2 Metod 2.1 Förstudie Det vanligaste sättet att simulera gelé är att använda sig av masspunkter som är sammankopplade med flera fjädrar. Genom att justera fjädrarnas parametrar kan man få önskade egenskaper hos geléobjektet. För att motverka att fjädersystemet förlorar volym vid deformation tillämpas en gaslag som ser till att systemet har en konstant volym. För att det ska bli mer intressant att se på kommer även en kollisionshantering att implementeras. Vi valde att göra ett geléobjekt i form av en kub för att begränsa projektets storlek. Masspunkterna kan då placeras likt hörnpunkterna i många små inre kuber. Detta gör det enklare att konstruera fjäderstrukturen. Det finns olika alternativ att binda ihop masspunkterna med fjädrar. Enklast är att ta de sex närmaste masspunkterna och koppla ihop dem med fjädrar som härmed benämns sidofjädrar. Detta kommer dock ge en svag struktur som lätt kollapsar. För att motverka detta kan dras fjädrar mellan diagonalerna och rymddiagonalerna. (a) sidofjädrar (b) diagonalfjädrar (c) rymddiagonalfjädrar Figur 2.1: De olika typer av fjädrar vi implementerar Det är svårt att uppskatta bra värden på fjäder- och dämningskonstanter därför kommer dessa att tas fram experimentellt. Densiteten uppskattats till att överensstämma med densiteten hos riktigt gelé. Ett enkelt test av systemet gjordes genom att bygga fjädermodellen i 3D Studio Max @. Med detta test bekräftade att modellen var tillräckligt realistisk. Vid implementeringen användes programmeringsspråket C med ramverket XNA. 2.2 Matematisk modell En Bond graf ställdes upp för en masspunkt med en ansluten fjäder. Grafen tog även hänsyn till dämpningen och yttre krafter som gravitation. Från detta kunde vi sedan härleda en differentialekvation. x 2 t 2 = v = a = 1 m ( F Hook F dämpning F yttre ) (2.1) 7

Figur 2.2: bindningsgraf 2.3 Eulers stegmetod Denna metod används för att lösa differentialekvationen (2.1). Metoden använder andra ordningens taylorutveckling för att approximera lösningen till differentialekvationer. Standardformen på Eulers stegmetod ser ut som följande: och i diskret fall y(t + h) = y(t) + f(t, y(t))h (2.2) y k+1 = y k + f(t k, y k )h (2.3) h är steglängden, y k+1 är värdet i nästa tidspunkt, y k är det föregående värdet och f(t k, y k ) är derivatan till y k. Initialvärden på y k och f(t k, y k ) behövs för att approximera första steget. Man använder alltså derivatans riktning i tidpunkten k och rör sig sedan i denna riktning under tiden h. Denna metod körs iterativt. 2.4 Fysikaliska formler För att beräkna kraften av fjädern användes Hookes lag (2.4) där k Hook är fjäderkonstanten och x 0 viloläget för fjädern. F = k Hook (x x 0 ) (2.4) Denna måste utökas till tre dimensioner med vektorer för att få rätt riktning på kraften, vilket ger oss formeln (2.5). L är vektorn från masspunkt B till A. F = k Hook ( L x 0 ) L Eftersom fjädrarna inte oscillerar i all oändlighet måste man ta hänsyn till dämpning. L (2.5) Även denna ska gälla för tre dimensioner, och skall därför också utökas. F = k Dämpning v (2.6) För att simulera friktion användes friktionsformeln: ( v A v B ) F = k L L Dämpning L L (2.7) F = µn (2.8) Gravitation: F = mg (2.9) 8

Figur 2.3: De krafter som påverkar en masspunkt (rymddiagonalkraften är ej inkluderad) 2.5 Implementation 2.5.1 2D simulering För att minska komplexiteten och få ett snabbare resultat gjordes inledande simulering av gelén i endast två dimensioner. Detta bekräftade att komponenter som Euler integration, fjäderberäkningar och visualiseringen funkade. Klass Particle Denna klass representerar en masspunkt med parametrarna: position, vikt, hastighet, acceleration och resulterande kraft (total kraft som påverkar masspunkten). Här beräknas accelerationen med hjälp av ekvation (2.1), samt hastigheten och den nya positionen med ekvationen (2.3) i klassen Euler. Gravitationen (2.9) läggs också till som ursprungligt värde i den resulterande kraften Klass Spring Denna klass representerar en fjäder med parametrarna: längd (fjäderns längd i viloläge), fjäderkonstant och dämpningskonstant. Här beräknas fjäderkraften givet avståndet och relativa hastigheten, med hjälp av (2.5) och (2.7). Klass Euler Denna klass utför numerisk integrering då derivata och tidigare värde är givna. Klass BaseCube2D Denna klass skapar alla masspunkter och binder ihop dem med fjädrar. Härifrån anropas också metoderna i klasserna Spring och Particle för att beräkna krafter och nya positioner. Klass PolygonCube2D Denna klass ritar ut polygoner med masspunkter som referens. Struktur Vid körning skapas först ett BaseCube2D objekt som lägger in masspunkter i en matris av önskad storlek. Utifrån denna matris skapas sedan de olika fjädrarna som sammankopplar masspunkterna med varandra. Dessa lagras i en matris där varje rad innehåller två masspunkter som är sammankopplade med en fjäder. Detta behöver bara köras en gång och är grunden till simuleringen. För varje bildruta beräknas fjäderkraften för alla fjädrar. Dessa krafter adderas sedan till respektive masspunkts resulterande kraft. Den resulterande kraften hos en masspunkt används för att beräkna dess acceleration. Då accelerationen har beräknats kan den nya hastigheten tas fram med hjälp av Euler integration. På samma sätt kan den nya positionen bestämmas utifrån hastigheten. För att kompensera avsaknaden av kollisionshantering fixerades vissa Masspunkter så att den inte faller fritt. 2.5.2 3D simulering I den tredimensionella simuleringen utökades befintliga klasser. Klasserna Particle, Spring och Euler förblir dock oförändrade. 9

Klass BaseCube3D Precis som BaseCube2D skapar denna klass alla masspunkter och binder ihop dem med fjädrar. Skillnaden är att masspunkterna lagras i en tredimensionell matris, vilket ger en direkt motsvarighet till positionerna i kuben, samt att fjäderstrukturen har utökats med rymddiagonala fjädrar. Här ligger även kollisionshanteringen och friktionsberäkningarna. Klass PolygonCube3D Precis som PolygonCube2D ritar denna ut polygonerna utifrån masspunkterna. Skillnaden är att den nu plockar ut de yttre masspunkterna och ritar upp var och en av kubens sex sidor för sig. För att ljussättningen ska bli rätt beräknas också normalen för varje vertex (masspunkt), varje gång bilden uppdateras. Enkel kollisionshantering Som en inledande, förenklade version av kollisionshantering bestämdes en höjd på y-axeln som masspunkterna i kuben hindrades från att komma under. För att göra detta flyttades masspunkterna upp till den givna höjden, samt nollställa den resulterande kraften i y-led. Detta görs innan acceleration, hastighet och positionen uppdateras. Avancerad kollisionshantering I varje tidsteg kontrolleras varje masspunkt i geléobjekt om den befinner sig inuti ett annat objekt. Detta görs genom att för varje polygon i det objektet beräknas skalärprodukten mellan polygonens normal (N) och en vektor (v) från en punkt på polygonen till den aktuella masspunkten (se figur 2.4(a)). Det ger avståndet h mellan polygonen och masspunkten. Om det är negativ ligger masspunkten på baksidan av polygonen (se figur 2.4(b)). Om alla avstånd för en masspunkt är negativa befinner den sig i objektet och då måste åtgärder vidtas. De punkter som upptäcks vara i objektet flyttas ut ur objektet (se figur 2.4(c)). Hastighet och acceleration måste också uppdateras. För att veta vart punkten skall flyttas kontrolleras vilket avstånd som är minst, då vet man vilken polygon som är närmast. Masspunkten flyttas sedan det avståndet enligt den närmaste polygonens normalriktning. För masspunkten räknas normalkraften genom att beräkna skalärprodukten mellan polygonens normal och resulterande kraft på masspunkten. Det multipliceras sedan med normalen för att få rätt riktning på kraften. Normalkraften adderas sedan från masspunkten resulterande kraft. Samma princip används för att beräkna en ny hastighet, men istället för resulterande kraft används masspunktens hastighet. Allt detta görs för att masspunkten inte skall fortsätta in i objektet. (a) Före kollision (b) Upptäckt kollision (c) Justerad Figur 2.4: Kollisionshanteringen Friktion Friktionen beräknas bara för de masspunkter som fångas upp av kollisionshanteraren. Detta beräknades genom att använda friktionsformeln (2.8) där normalkraften är lika stor som masspunktens resulterande kraft i y-led (innan denna nollställs), men vänd åt andra hållet. Precis som i riktig friktion har olika friktionskonstanter implementerats för stillastående och för rörelse. Om masspunkten är stillastående jämförs längden av kraftvektorn, efter att den nollställts i y-led, med längden av friktionskraftens vektor. Om friktionskraften är störst nollställs hela kraften på masspunkten, så att den inte rör på sig. Om friktionskraften är minst kommer masspunken att vara i rörelse och en ny friktionskraft beräknas, med lägre friktionskonstant. Friktionskraften vid rörelse verkar som en konstant kraft, motsatt rörelseriktningen. Grafik 10

Vi skapar först en abstrakt version av vår gelékub, men för att kunna visualisera den måste vi även skapa en grafisk representation av den. För detta skrev vi en funktion som efter givna data skapar en polygon kub. Varje sida av kuben är uppdelad i ett antal mindre polygoner, där storleken bestäms av partikelavståndet. För enkelhetens skull sätter vi samma färg på alla polygoner. 2.6 Pseudokod För varje blidruta För varje fjäder i fjädermatrisen Beräkna fjäderkraften Beräkna dämpningskraften Addera resulterande kraft till masspartiklarna För varje masspunkt (I 3D fallet görs även detta) Om masspunkt kolliderar med ytan Flytta upp masspunkt och nollställ resulterande kraft i y-led Beräkna friktion och uppdatera den resulterande kraften Addera gravitationen till resulterande kraft Beräkna acceleration Beräkna hastighet med hjälp av euler integration Beräkna position med hjälp av euler integration Uppdatera position - - 11

12

Kapitel 3 Resultat De fjäderkonstanter och dämpningskonstanter som ger en simulering som är mest verklighetstrogen är listade i tabellen nedan (Tabell 3.1). Tabell 3.1: Fjäder- och dämpningskonstanter Sidofjäder Diagonalfjäder Rymddiagonalfjäder Fjäderkonstant 400N 420N 440N Dämpningskonstant 1,5 1,5 1,5 Densiteten har vi valt till: 1000kg/m 3 Storleken har vi valt till: 5x5x5x0,02 (Bredd x Höjd x Tjockleck x Partikelavstånd) Vilket ger oss en massa på 1kg För Eulersteget använder vi : h = 0.008 Resultatet i två dimensioner: (a) (b) (c) (d) (e) (f) Figur 3.1: 2D-simulering 13

Resultatet i tre dimensioner: (a) (b) (c) (d) (e) (f) Figur 3.2: 3D-simulering Begränsningen för vår simulering är ca 260 masspunkter, vilket blir ca 2500 fjädrar. Detta kommer resultera i ca 600.000 fjäderberäkningar/sek. Även kollision och grafikberäkningarna som utförs tar en del prestanda. Den dator vi har utfört simuleringen på har följande specifikationer: Intel Core 2 Duo 2.0Ghz 2048 Mb ram ATI X1800 mobility 256Mb Gelékuben kan kollapsa om den utsätts för stora krafter. Anledningen till att detta sker är att fjädern trycks ihop så mycket att startpunkten passerar slutpunkten och trycks ut åt fel håll då den söker sitt viloläge. Det leder till att kuben bli deformerad. 14

Kapitel 4 Slutsats och diskussion Strukturen på vår modell består av sido-, diagonal- och rymddiagonalfjädrar. Detta ger en acceptabel simulering av gelé i realtid, så länge inga stora krafter påverkar geléobjektet. För att undvika detta utförde vi test med fyra stycken rymddiagonalfjädrar på hela kuben. Detta ökade stabiliteten något men medförde också ett orealistiskt beteende hos kuben. Därför valde vi att inte använda det. Simuleringen kan köras med endast sido- samt diagonalfjädrar dock ger det bättre stabilitet med rymdiagonalfjädrar. Gaslagen implementerades inte. Detta för att det gav ett tillräckligt bra resultat med rymddiagonalfjädrarna. De fjäder- och dämpningskonstanter som används ger en acceptabel dallrande konsistens samt en stabil struktur som inte kollapsar. Högre fjäderkonstanterna ger en fastare struktur och högre dämpningskonstant gör att dallringarna minskar. Euler stegmetod är beroende av en liten steglängd för att simuleringen skall vara stabil. Om en större kraft verkar på en masspunkt och steglängden är för stor kommer detta leda till att krafterna blir okontrollerbara. Inträffar det kommer objektet att exploder. För att undvika det har vi valt att använda en liten steglängd, detta ger dock en långsam simulering. Detta löstes genom att uppdatera simuleringen flera gånger för varje bild som visas. Det som sätter begränsningen på hur många uppdateringar man kan köra är datorns prestanda. Vår kollisionsmodell fungerar för konvexa och statiska objekt. Kollisionsmodellen beräknar endast för geléobjektets masspunkter och inte polygoner, vilket kan leda till att en av geléobjektets polygoner kan hamna innanför ett statiskt objekt. Detta inträffar sällan då masspunktsavståndet är relativt litet och är därför inget stort problem. Friktionskonstanterna som används har även den tagits fram via experiment mot ett underlag som vi definierade som plast. Fjädermodellen som vi har använt oss av kan tillämpas på andra mjuka objekt. T.ex. om vi ändrar storleken kan vi simulera objekt som tyg och rep dock är vår simulering inte anpassad till dessa. Om kursen haft en större omfattning skulle vi kunnat utöka vår modell. Bl.a. Kollisionsmodell mellan mjuka kroppar Implementering av gaslag Optimering av kod för bättre prestanda Snyggare grafisk representation 15