En introducerende lærebog i dynamisk simulation af stive legemer. Kenny Erleben

Relaterede dokumenter
Matricer og lineære ligningssystemer

Afstande, skæringer og vinkler i rummet

Afstande, skæringer og vinkler i rummet

Egenskaber ved Krydsproduktet

Vektorer og lineær regression

Egenskaber ved Krydsproduktet

Vektorer og lineær regression. Peter Harremoës Niels Brock

Vinkelrette linjer. Frank Villa. 4. november 2014

De rigtige reelle tal

Kvadratiske matricer. enote Kvadratiske matricer

Andengradsligninger. Frank Nasser. 12. april 2011

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 4

Studieretningsopgave

Chapter 3. Modulpakke 3: Egenværdier. 3.1 Indledning

Andengradsligninger. Frank Nasser. 11. juli 2011

Kursusgang 3 Matrixalgebra Repetition

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

Analytisk Geometri. Frank Nasser. 12. april 2011

π er irrationel Frank Nasser 10. december 2011

Løsning af simple Ligninger

DesignMat Uge 1 Gensyn med forårets stof

Her er et spørgsmål, du måske aldrig har overvejet: kan man finde to trekanter med samme areal?

Delmængder af Rummet

De fire elementers kostbare spejl

Nummeriske Metoder. 1 Indledning. 2 Davidson metoden. Bo Thomsen, juni 2009

Omskrivningsregler. Frank Nasser. 10. december 2011

Besvarelser til Calculus og Lineær Algebra Globale Forretningssystemer Eksamen - 8. Juni 2015

Appendiks 6: Universet som en matematisk struktur

Matlab script - placering af kran

Fraktaler. Mandelbrots Mængde. Foredragsnoter. Af Jonas Lindstrøm Jensen. Institut For Matematiske Fag Århus Universitet

Pointen med Differentiation

Matematik for økonomer 3. semester

Teoretiske Øvelsesopgaver:

Ordbog over Symboler

Ting man gør med Vektorfunktioner

Ting man gør med Vektorfunktioner

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger

Det Ingeniør-, Natur- og Sundhedsvidenskabelige basisår Matematik 2A, Forår 2007, Hold 4 Opgave A Kommenteret version

Projekt 2.5 Brændpunkt og ledelinje for parabler

3D-grafik Karsten Juul

Fraktaler Mandelbrots Mængde

Oversigt [LA] 3, 4, 5

Besvarelser til Calculus og Lineær Algebra Globale Forretningssystemer Eksamen - 3. Juni 2014

Fejlkorligerende køder Fejlkorrigerende koder

Komplekse tal. Jan Scholtyßek

Projekt 2.1: Parabolantenner og parabelsyning

Lineære 1. ordens differentialligningssystemer

Vektorfunktioner. (Parameterkurver) x-klasserne Gammel Hellerup Gymnasium

Definition multiplikation En m n-matrix og en n p-matrix kan multipliceres (ganges sammen) til en m p-matrix.

Nøgleord og begreber. Definition multiplikation En m n-matrix og en n p-matrix kan multipliceres (ganges sammen) til en m p-matrix.

Komplekse tal. Mikkel Stouby Petersen 27. februar 2013

Kaotisk kuglebevægelse En dynamisk analyse

Lineære ligningssystemer

Kompendium i faget. Matematik. Tømrerafdelingen. 2. Hovedforløb. Y = ax 2 + bx + c. (x,y) Svendborg Erhvervsskole Tømrerafdelingen Niels Mark Aagaard

Dette miniprojekt omhandler en anvendelse af Lineær Algebra til computergrafik og planeters omløbsbaner.

VisiRegn: En e-bro mellem regning og algebra

Eksempel på den aksiomatisk deduktive metode

Integralregning Infinitesimalregning

Trekanter. Frank Villa. 8. november 2012

Kursusgang 3 Matrixalgebra fortsat

Lokalt ekstremum DiploMat 01905

Besvarelser til Lineær Algebra og Calculus Globale Forretningssystemer Eksamen - 6. Juni 2016

Besvarelser til Lineær Algebra Ordinær Eksamen - 5. Januar 2018

Analytisk Geometri. Frank Nasser. 11. juli 2011

Studieretningsprojekter i machine learning

Projekt 2.5 Brændpunkt og ledelinje

Vektorregning. Vektorer som lister

Baggrundsnote om logiske operatorer

Geometriske konstruktioner: Ovaler og det gyldne snit

Matematisk modellering og numeriske metoder. Lektion 13

Besvarelser til Lineær Algebra Ordinær eksamen - 6. Juni 2016

Besvarelser til Calculus Ordinær Eksamen Juni 2017

Grafmanipulation. Frank Nasser. 14. april 2011

Besvarelser til Lineær Algebra Ordinær Eksamen Juni 2017

Aflevering 4: Mindste kvadraters metode

Funktionsterminologi

Oprids over grundforløbet i matematik

Algebra - Teori og problemløsning

Fysik i billard. Erik Vestergaard

Oversigt [LA] 10, 11; [S] 9.3

1 Om funktioner. 1.1 Hvad er en funktion?

Polynomiumsbrøker og asymptoter

Differentiation af Trigonometriske Funktioner

Ølopgaver i lineær algebra

Det er en af de hyppigst forekommende udregninger i den elementære talbehandling at beregne gennemsnit eller middeltal af en række tal.

Hvad er matematik? C, i-bog ISBN

Mere om differentiabilitet

LinAlgDat 2014/2015 Google s page rank

Implikationer og Negationer

Taylors formel. Kapitel Klassiske sætninger i en dimension

Funktioner og ligninger

Projekt 3.4 Fjerdegradspolynomiets symmetri

Udledning af Keplers love

Tilhørende: Robert Nielsen, 8b. Geometribog. Indeholdende de vigtigste og mest basale begreber i den geometriske verden.

Lineære 1. ordens differentialligningssystemer

Produkter af vektorer i 2 dimensioner. Peter Harremoës Niels Brock

Additionsformlerne. Frank Villa. 19. august 2012

Gruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel.

Matricer og Matrixalgebra

Besvarelser til Lineær Algebra Ordinær Eksamen Juni 2018

Transkript:

En introducerende lærebog i dynamisk simulation af stive legemer Kenny Erleben 1. februar, 2001

Resumé Dette er et speciale i datalogi omhandlende dynamisk simulation af stive legemer. Specialet er udarbejdet med henblik på at kunne anvendes som en introducerende lærebog i dynamisk simulation. Specialets centrale bidrag er et generelt moduldesign, der kan anvendes i forbindelse med alle de simulatortyper, der eksisterer i dag. Dette speciale adskiller sig hovedsagligt fra andre lærebøger ved, at der fokuseres mere på bredden i emnet. Formålet er at give læseren et grundigt overblik og indsigt i den anvendte teori, samt afhjælpe nogle af de praktiske problemer, man normalt støder på som nybegynder.

Kapitel 1 Forord Dette speciale er skrevet i forbindelse med datalogistudiet på datalogisk institut ved københavns universitet (DIKU). Specialet er udarbejdet af Kenny Erleben i perioden septemper 2000 til feburar 2001. Specialets emne er dynamisk simulation af stive legemer. Hovedformålet med dette speciale er at udforme det som en introducerende lærebog. Målgruppen for dette speciale er typisk studerende, som har gennemført de første par år af deres uddannelse. Med andre ord læseren bør have kendskab til forskellige grundlæggende ting, såsom datastrukturer, vektorer og matricer. Der er allerede skrevet mange artikler og bøger om dynamisk simulation, så hvorfor skulle jeg prøve at skrive endnu en lærebog? Jeg mener selv, at jeg har en god chance, for at kunne skrive en god introducerende lærebog, eftersom jeg har et lidt mere farvefuldt synspunkt på, hvorfor det er vanskeligt at få lært de grundlæggende ting. 1.1 Hvorfor er det så vanskeligt? Der er ingen tvivl om, at dynamisk simulation af stive legemer er et interessant og spændende emne. Desuden er dynamisk simulation begyndt at blive et virkelig populært emne, dels er både lm- og spilindustrien begyndt at få øjnene op for mulighederne. Ydermere kan man næsten ikke nævne Virtual Reality (forkortet VR) uden også at nævne dynamisk simulation i samme sætning. En ting, som alle hurtigt kan blive enige om, er, at det er meget nemt at blive inspireret til at prøve på at implementere en simulator. Desværre er der en temmelig lang vej fra at læse en videnskabelig artikel eller en lærebog til selv at kunne gennemføre en succesfuld implementering af en simulator. Dertil kommer, at vejen er fuld med skarpe sving, hvor det kan være vanskeligt at se, hvordan man kommer videre. Selv har jeg efterhånden arbejdet med dynamisk simulation af stive legemer i et par år, og det er faktisk først nu, at jeg med dette speciale kan sætte kronen på værket, og med fuld overbevisning og god samvittighed sige, at jeg langt om længe endelig har fået lært alt det grundlæggende. Jeg er derfor fuldstændig enig med en masse andre i, at dynamisk simulation er meget tidskrævende og har en enorm stejl indlæringskurve. Eftersom jeg selv har en god portion fysik og matematik med i bagagen, så 2

KAPITEL 1. FORORD 3 har jeg et lidt andet synspunkt på, hvorfor det er en tidskrævende og vanskelig indlæringsproces. Det traditionelle synspunkt er, at det er den store mængde fysik og matematik, som gør indlæringskurven meget stejl. Jeg mener dog, at dette kun er en af de medvirkende årsager. Efter min mening er der yderligere re andre medvirkende årsager. Disse er: 1. Emnet spænder vidt og dækker mange datalogiske fagområder. 2. Emnet opfattes, som om det kun er for grask interesserede. 3. Faglitteraturen er meget specik, og fokuserer på helt bestemte problemer. Det er derfor svært at danne sig et overordnet overblik og forstå, hvordan forskellige løsninger skal arbejde sammen. 4. Det er svært at forstå, hvordan en simulator skal konstrueres i praksis. 1.2 Specialets bidrag Dette speciale forsøger at udbedre kendskabet til dynamisk simulation og gøre indlæringsprocessen mere overkommelig for nybegyndere. Håbet er, at dette speciale kan motivere og hjælpe endnu ere til at arbejde med dynamisk simulation. Det centrale og selvstændige bidrag i dette speciale er et generelt moduldesign, som jeg benytter til at give læseren et overblik, samt indsigt i hvordan en simulator fungerer i praksis. Dette moduldesign er selvfølgelig mit bud på, hvordan verden bør se ud, der ndes sikkert andre, som synes, nogle ting bør gøres lidt anderledes. Før jeg begyndte på at skrive dette speciale, arbejdede jeg på et eksperimentelt simulator klasse API, som jeg navndøbte QAD (en forkortelse for Quick And Dirty). QAD var et meget ambitiøst projekt, hovedmålet var i bund og grund at implementere en masse forskellige veldenerede byggeklodser, som kunne sættes sammen på forskellige måder, således at man kunne få forskellige simulatorer ud af det. Da projektet blev afbrudt, kunne man sammensætte mere end 30 forskellige simulatorer. Håbet var, at man kunne skjule unødvendig information for andre, så de kunne nøjes med at fokusere på de metoder og algoritmer, som interesserede dem. Det var og er stadigvæk min overbevisning, at QAD vil være et værdifuldt værktøj både til forskning og undervisning. Uheldigvis var dette projekt ikke så succesfuldt, som jeg havde håbet på. Der var store problemer med at få en høj ydeevne, dels fordi byggeklodserne skulle være så generelle, at de kunne kombineres vilkårligt med hinanden. Projektarbejdet er derfor midlertidig afbrudt. QAD var dog ikke helt mislykket, jeg opnåede nemlig et meget vigtigt resultat med QAD: Moduldesignet. De byggeklodser jeg arbejdede med, endte efter et par versioner med at være et abstrakt moduldesign. Det er dette moduldesign, som jeg har fornet og præsenterer i dette speciale. Pointen med min lille baggrundshistorie er, at mit moduldesign har været anvendt i praksis, og er altså ikke et eller andet teoretisk luftkastel. Interesserede læsere opfordres til at henvende sig til forfatteren af dette speciale for nærmere oplysninger omkring QAD.

KAPITEL 1. FORORD 4 1.3 Alle de andre Jeg vil gerne takke alle de mennesker, som på den ene eller anden måde har bidraget til, at dette speciale er blevet til. Her i blandt både familie, venner, arbejdskollegaer, medstuderende, lektorer, professorer og en masse andre mennesker. Nogle af disse har bidraget med en ekstraordinær indsats eller interesse, som fortjener at blive nævnt. Denne liste er meget lang, så jeg håber ikke, at nogen tager det ilde op, at de ikke er blevet nævnt på grund af plads hensyn. Knud Henriksen har fungeret som min specialekonsulent. Han er altid frisk med en god ide og den mest grundige korrekturlæser, jeg nogensinde har stødt på. Niels Jørgensen fra Niemo Entertainment kan virklig sin C++, og har air for at omsætte teorien til noget praktisk anvendeligt. Foruden Niels ville jeg stadigvæk sidde og rode med min compiler. Thomas Wang en af de mest seriøse og ittige dataloger jeg nogensinde har mødt, uden hans hjælp ville LATEX stadigvæk være et mysterium for mig. Lonni og Bonni Erleben hvis skyld det er, at dette speciale ikke er blevet grammatisk ulæseligt. Derudover har en lang række af personer fra internettet tålmodigt bistået med kildereferencer og alen lange faglige email diskussioner: Emmanuel Chamayou, Dave Eberle, Brian Mirtich, Chris Hecker og David Bara samt en masse andre. God fornøjelse Kenny Erleben Brønshøj, februar, 2001

Indhold 1 Forord 2 1.1 Hvorfor er det så vanskeligt?.................... 2 1.2 Specialets bidrag........................... 3 1.3 Alle de andre............................. 4 2 Læservejledning 10 3 Indledning 12 4 Terminologi 15 I Grundlæggende matematik 17 5 Lineær algebra 19 5.1 Matricer................................ 19 5.2 Quaternioner............................. 29 6 Geometri 34 7 LCP problem 42 7.1 Algoritme............................... 42 7.1.1 Overblik............................ 42 7.1.2 Det k'te indeks........................ 43 8 Dierentialligninger 49 8.1 Eulers metode............................. 50 8.2 Runge Kutta............................. 51 8.3 Adaptiv skridtstørrelse........................ 52 8.3.1 Step doubling......................... 53 8.3.2 Indlejrede Runge Kutta formler............... 54 8.4 Stivhed og stabilitet......................... 55 II Den Grundlæggende fysik 57 9 Bevægelsesligningerne 59 9.1 De fysiske love............................ 59 9.1.1 Newtons love......................... 59 5

INDHOLD 6 9.1.2 Massemidtpunktets bevægelse................ 61 9.1.3 Vinkelhastigheden...................... 64 9.1.4 Kraftmoment og Impulsmoment.............. 66 9.1.5 Inertimatricen........................ 71 9.2 Orienteringer............................. 74 9.3 Dierentialligninger......................... 77 9.3.1 Matematiske formler for de fysiske love.......... 77 9.3.2 Tilstandsfunktionen..................... 77 10 Masseegenskaber 81 10.1 Denitioner.............................. 81 10.2 Udregning............................... 84 10.2.1 En terning.......................... 84 10.2.2 En kugle............................ 85 10.3 Regneregler.............................. 87 10.4 Rumfangsintegration......................... 88 10.4.1 Overblik............................ 89 10.4.2 Algoritme........................... 90 III Kollisionsbestemmelse 104 11 Grovkornet kollisionsbestemmelse 106 11.1 Grundlæggende principper...................... 107 11.1.1 Approksimationsprincippet................. 107 11.1.2 Lokalprincippet........................ 108 11.1.3 Geometrisk ensartethed................... 108 11.2 Omsluttende bokse.......................... 108 11.2.1 Fikserede bokse........................ 109 11.2.2 Sweeping volumes...................... 109 11.3 Alle mod alle test........................... 111 11.3.1 Overlap mellem to omsluttende bokse........... 111 11.4 Koordinatsortering.......................... 112 11.5 Hierarkiske rumlige hashtabeller.................. 114 11.5.1 Enkelt niveau......................... 115 11.5.2 Flere niveauer......................... 116 12 Finkornet kollisionsbestemmelse 120 12.1 Overblik................................ 120 12.1.1 Rumlige datastrukturer................... 121 12.1.2 Geometriske størrelser.................... 122 12.1.3 Simplex............................ 122 12.2 Sphere trees.............................. 123 12.2.1 Kollisionstesten........................ 124 12.2.2 Opbygning af et sphere tree................. 125 12.3 V-Clip................................. 126 12.3.1 Overblik............................ 126 12.3.2 Kantklipning......................... 127 12.3.3 Indenfor............................ 129 12.3.4 Udenfor............................ 131

INDHOLD 7 12.3.5 Gennemtrængning...................... 133 12.3.6 Pseudokode.......................... 134 13 Kontaktmangfoldighedsproblemet 140 13.1 Grundlæggende denitioner..................... 140 13.2 En geometrisk metode........................ 151 13.2.1 Antagelser........................... 151 13.2.2 Algoritme........................... 152 13.2.3 Korrekthed.......................... 154 13.3 Kontaktpunktsovervågning...................... 154 13.3.1 Antagelser........................... 155 13.3.2 Algoritme........................... 155 13.3.3 Korrekthed.......................... 155 IV Fysiske vekselvirkninger 157 14 Kollisioner 159 14.1 Impuls................................. 160 14.2 Fysiske love og hypoteser...................... 162 14.2.1 Den virkelige verden..................... 162 14.2.2 Stive legemer......................... 164 14.2.3 Lovlige parameteriseringer.................. 164 14.2.4 Et kontaktpunkt....................... 165 14.2.5 Newtons kollisionslov..................... 169 14.2.6 Poissons hypotese...................... 169 14.2.7 Stronges hypotese...................... 169 14.2.8 Coulombs friktionslov.................... 170 14.3 Impuls-moment relationen...................... 171 14.4 Kollisionslove............................. 175 14.4.1 Algebraiske love....................... 176 14.4.2 Incremental love....................... 176 14.4.3 Full deformation love..................... 176 14.4.4 Computer simulation..................... 177 14.5 Et geometrisk værktøj........................ 177 14.5.1 Fysiske antagelser omkring impulser............ 184 14.5.2 Restitution.......................... 186 14.6 En simpel algebraisk lov....................... 187 14.7 En simpel incremental lov...................... 189 14.7.1 Strategi............................ 189 14.7.2 Kontaktmodel......................... 189 14.7.3 Dierentialligninger..................... 190 14.8 Metoder til kollisionshåndtering................... 194 14.8.1 Sekventielle impulser..................... 194 14.8.2 Samtidige impulser...................... 197 14.9 Opsummering............................. 204

INDHOLD 8 15 Kontaktkræfter 205 15.1 Fysiske betingelser.......................... 206 15.1.1 Gennemtrængninger..................... 207 15.1.2 Kontaktkraft......................... 208 15.1.3 LCP kontaktkraftproblemet................. 210 15.2 Den lineære funktion......................... 212 15.2.1 Kontaktpunkt......................... 213 15.2.2 Vinkelaccelerationen..................... 214 15.2.3 Relativ bevægelse....................... 215 15.2.4 Udledning af en lineær funktion............... 217 15.3 Friktion................................ 220 15.3.1 Dynamisk friktion...................... 221 15.3.2 Statisk friktion........................ 222 15.3.3 Problemer med Coulombs friktionslov........... 226 V Kontrol 232 16 Tidskontrol 234 16.1 En simpel algoritme......................... 235 16.2 Bisektion............................... 235 16.3 TOI heaps............................... 237 16.3.1 TOI beregning........................ 238 16.3.2 Øvre grænseværdi for vinkelhastighed........... 242 16.3.3 Heapen............................ 242 17 Simulatorparadigmer 246 17.1 Strafmetoder............................. 247 17.1.1 Fjedre............................. 248 17.1.2 Energideformationsfunktioner................ 249 17.1.3 Sammenfatning........................ 249 17.2 Analytiske metoder.......................... 250 17.3 Impulsbaserede metoder....................... 251 17.3.1 Klassicering af en statisk kontakt............. 252 17.3.2 Microkollisioner........................ 253 17.3.3 Sammenfatning........................ 254 17.4 Hybrider................................ 255 18 Efterskrift 256 18.1 De afgrænsede emner......................... 256 18.2 De svære emner............................ 257 18.3 Fremtidige emner........................... 257 A Svar til udvalgte opgaver 258 A.1 Svar til opgaver i kapitel 5...................... 258 A.2 Svar til opgaver i kapitel 7...................... 261 A.3 Svar til opgaver i kapitel 9...................... 261 A.4 Svar til opgaver i kapitel 10..................... 264 A.5 Svar til opgaver i kapitel 11..................... 269 A.6 Svar til opgaver i kapitel 12..................... 271

INDHOLD 9 A.7 Svar til opgaver i kapitel 13..................... 275 A.8 Svar til opgaver i kapitel 14..................... 280 A.9 Svar til opgaver i kapitel 15..................... 284 A.10 Svar til opgaver i kapitel 16..................... 286

Kapitel 2 Læservejledning Kildereferencer er angivet, som et heltal i rkantede parenteser f.eks. [5], denne reference passer med en tilsvarende reference i litteraturlisten. Kilden ndes altså ved at slå referencen op i litteraturlisten, som ndes bagerst i specialet, kildereferencerne kan også være opgivet som en komma separeret liste f.eks. [7,9,13], igen refererer tallene til de tilsvarende kilder i litteraturlisten. Forfattere eller andre personer i kilderne angives ved deres efternavn efterfulgt af en evt. kildereference f.eks. Bara [2]. Igen kan der også optræde komma separerede lister af kilderne. Krydshenvisninger sker ved at afsnitsnummer og titel angives, f.eks. er: 1.1 Mit afsnit, en henvisning til afsnittet med titlen Mit afsnit og nummereringen 1.1. Det antages, at læseren er bekendt med vektorregning, matricer og lineære ligningssystemer. Det vil være en fordel, hvis læseren har en forståelse for klassisk mekanik, men det er ikke nødvendigt. Derudover bør læseren have kendskab til forskellige simple datastrukturer og forstå hvad en tidskompleksitet er. Det vil være en fordel for læseren at have kendskab til et programmeringssprog, der ligner C, C++ eller Java, da al pseudokode er skrevet med en notation, der minder om disse sprog. I øvrigt vil der blive benyttet den konvention, at alle vektorer angives symbolsk med en pil for oven, matricer angives som regel med store fremhævede bogstaver. Vektor og matrixelementer angives med subscript. Den absolutte værdi af et tal skrives som, hvorimod længden/normen af en vektor angives som. Yderligere nødvendig notation vil blive forklaret i de respektive afsnit, hvor det anvendes. For det meste vil det blive forsøgt at anvende danske betegnelser og navne, Nogle gange kan det være svært at nde et pænt dansk ord, der vil derfor blive brugt engelsk i stedet for. Andre gange er de engelske ord blevet en så indgroet del af emnerne, så selvom der ndes tilsvarende danske ord, så vil de engelske blive brugt i stedet. Læseren bør tage dette som en advarsel om ikke at hænge sig for meget i, om det er en dansk eller engelsk betegnelse, der bruges. Eventuelle oversættelser vil være efterfulgt af parenteser, som indeholder oversættelsen f.eks. bil (eng. car) eller house (da. hus). Betydningen skulle gerne fremgå klart. Selvom dette speciale kun er blevet skrevet og udarbejdet af en eneste person, så er det bevidst blevet skrevet i vi-form i stedet for jeg-form. Årsagen er, at 10

KAPITEL 2. LÆSERVEJLEDNING 11 forfatteren mener, at vi-formen er mere høig og egner sig bedre til en lærebøg end jeg-formen. Specialet er delt op i fem dele, hver del af specialet starter med sin egen korte indledning, samt eventuelle specikke læservejledninger for den enkelte del. Igennem de este kapiteler er der blevet konstrueret forskellige pædagoiske opgaver. Formålet med opgaverne er dels at afhjælpe nogen af de praktiske problemer, men også at fremhæve vigtige punkter i teorien. Svarene på opgaverne er alle sammen blevet samlet i bilag A Svar til udvalgte opgaver. Det anbefales, at læseren læser specialet kronologisk, og giver sig tid til at kigge på opgaverne undervejs. Dette burde efter hensigten give det bedste udbytte.

Kapitel 3 Indledning Dynamisk simulation er ikke noget nymodens pjat, det har eksisteret lige siden de første supercomputer. Vi kan blandt andet nævne, at allerede i 60'erne benyttede militæret en supercomputer til at beregne banekurven af en kanonkugle, så de bedre kunne ramme fjenden. Sidenhen er man blevet bedre til at simulere mere avancerede ting. Det meste af det teoretiske arbejde, som er blevet udført i slutningen af 80'erne og starten af 90'erne, anses af mange for at være klassisk, og alt efterfølgende arbejde har da også været baseret på dette klassiske materiale. I dag er man nået så langt, at mange mener, der er tale om starten på en ny revolutionerende epoke. Om dette er sandt, kan kun fremtiden vise Ḋynamisk simulation er et kæmpemæssigt emne, som spænder meget vidt. Der ndes et utal af forskellige ting, som man forsøger at simulere, og der eksisterer mindst dobbelt så mange forskellige metoder til at foretage disse simulationer med. Dynamisk simulation er interessant, fordi man ikke kun forsøger at lave simulationer, som skal se godt ud, når de animeres, men fordi man forsøger at lave simulationerne så realistiske som muligt. Filosoen bag en stor del af det tidlige arbejde indenfor dynamisk simulation var, at jo mere realistisk man kunne simulere noget, jo bedre ville en animation kunne se ud. Efter vores mening så er det nok stadigvæk denne loso, som lokker mange i gang med dynamisk simulation, men det er også vores mening, at tingene er mere nuanceret nu til dags. Efter vores mening er der en hel klar forskel på animation og simulation. De repræsenterer hver deres ekstremer. I en animation er alt tilladt, bare det ser godt ud på en skærm. I en simulation er man altid tvunget til at overholde de regler, man har fra sin simulationsmodel. Dynamisk simulation handler i bund og grund om, at man benytter fysikkens love så godt, som det nu kan lade sig gøre for den type af system, man arbejder med. Det er da også derfor, at det kaldes for dynamisk simulation, fordi det handler om, at anvende det fysikere kalder for dynamik (årsag til bevægelse). I de sidste par årtier er dynamisk simulation blevet meget populært, det anvendes i computerspil og indenfor lmverden. Også industrien benytter dynamisk simulation, fordi det kan være et vigtigt værktøj, der kan spå om fremtiden. Dynamisk simulation deles normalt op i to forskellige klasser kaldet forward kinematics og inverse kinematics. Kinematics er igen et ord, som man har arvet fra fysikerne, det betyder bevægelse. Det handler altså om fremad bevægelse 12

KAPITEL 3. INDLEDNING 13 og baglæns bevægelse. Inverse kinematics foregår gerne på den måde, at man har en starttilstand og en sluttilstand af et eller andet system, og man ønsker så at beregne baglæns fra sluttilstanden tilbage til starttilstanden. Denne form for teknik er meget anvendt indenfor animation, fordi det er nemt for en animator at kontrollere bevægelsen af tingene. Mange kender til denne form for simulation, hvis de har prøvet at benytte animations- eller visualiseringssystemer, som benytter key framing. Ofte anvendes inverse kinematics også i systemer, som anvender såkaldte boning (dette ord betyder noget i retning af, at man lægger knogler ind i en model) animationsteknikker. Forward kinematics foregår anderledes, her kender man kun starttilstanden. Når ens simulator begynder at køre, må man så læne sig tilbage, og se hvad der sker. Populært kan man sige, at ens simulator prøver at komme med et kvaliceret gæt på, hvad der vil ske i fremtiden. Forward kinematics er svært at benytte til animation, fordi en animator ikke længere har den samme kontrol over sin animation. Typisk må man stoppe sin simulator, ændre starttilstanden og prøve igen, indtil man rammer noget, der ligner det, man ønsker. Forward kinematics egner sig derimod særlig godt til interaktive opgaver, f.eks. bilspil, ysimulatorer. Det egner sig også godt til at kunne foretage fysiske korrekte beregninger. Et eksempel kunne være en ingeniør, som bygger en bro. Før ingeniøren sætter folk igang med at grave og støbe beton, kunne han simulere, om broen ville kunne holde i virkeligheden. Meteoreloger benytter rent faktisk også forward kinematics, når deres computere forsøger at forudsige vejrudsigten. Forward kinematics har også store fremtidsperspektiver. Det er ikke særlig svært at forestille sig, at en bildesigner kunne teste på en computer, hvordan en ny type bil reagerer i forskellige færdselsuheld, hvorved bildesigneren kunne spare utrolig mange ressourcer og tid. Bildesigneren vil da også have nemt ved hurtigt at afprøve ændringer i hans design. Dette speciale omhandler kun forward kinematics. Hvilke ting kan man så egentlig simulere med forward kinematics? Vi har igen valgt at afgrænse os til det, som fysikere kalder for stive legemer (eng. rigid body dynamics). Man kan tænke på et stift legeme som en ideel jernstang, umulig at bøje eller at presse sammen. Den har altid den samme form, massefylde og massefordeling lige meget hvad. Mange af de teknikker og metoder, som anvendes indenfor dette emne, anses for at være grundlæggende indenfor mange andre emner indenfor dynamisk simulation. Det er derfor naturligt at starte med dette emne. Et af de tættest beslægtede emner er det, man på engelsk kalder for soft body dynamics (eksempler på soft bodies kunne være et tæppe elle en vaskesvamp). Men også partikelsystemer og nite element modelling har, hvad man kan kalde for beslægtede tendenser. Vi har nu fået indkredset os til, hvad vi mener med dynamisk simulation af stive legemer. Man skulle så tro, at vi nu havde et lille overskueligt emne at arbejde med. Det har vi ikke. Det er en almen opfattelse af mange, at dette emne er uoverskuelig stort, det er svært at komme i gang med, og det kræver meget tid. Det er vores formål med dette speciale at prøve på at ændre på denne opfattelse ved at udforme dette speciale som en introducernede lærebog i dynamisk simulation af stive legemer.

KAPITEL 3. INDLEDNING 14 Dynamic Simulation Inverse Kinematics Forward Kinematics Soft Body Dynamics Rigid Body Dynamics Penalty methods Impulse based Constraint based Hybrids Figur 3.1: Emner indenfor dynamisk simulation.

Kapitel 4 Terminologi Hvordan ser en typisk simulator ud? For mange af dem, som benytter en simulator, er den intet andet end en slags regnemaskine. Man fortæller simulatoren, hvilke stive legemer den skal simulere, hvordan de ser ud, deres massefylde og forskellige materialeparametre såsom gnidningskonstanter m.m.. Dette kalder man normalt for en konguration (eng. conguration) eller et system. En simulator har også behov for at vide, hvor de legemer, den skal simulere, er placeret, når simulationen starter. Derudover skal simulatoren også have information om, hvordan legemerne bevæger sig, når simulationen starter. Det vil sige, legemernes hastigheder. Al denne slags information omtales normalt som en tilstand (eng. state) af kongurationen. En simulator skal altså kende starttilstanden (eng. initial state eller 0-conguration) af kongurationen. For at simulatoren kan nde ud af, hvordan bevægelsen af legemerne ændrer sig, er man nødt til at fortælle noget om legemernes omgivelser (eng. environment). Omgivelserne dækker over de kræfter, som måtte virke på legemerne. Et eksempel kunne være tyngdekraft eller luftmodstand. Det kunne også bare være nogle eksterne kræfter, som ikke har nogen egentlig fysisk begrundelse eller betydning. Configuration Simulator Initial state Final state Environment Inbetween states Figur 4.1: En typisk simulator. 15

KAPITEL 4. TERMINOLOGI 16 Efter at man har fortalt simulatoren, hvilken konguration den skal simulere, starttilstanden af kongurationen og omgivelserne, er det simulatorens opgave at beregne den endelige sluttilstand af kongurationen. Dette foregår gerne ved, at man fortæller simulatoren: Find tilstanden efter 3 sekunder. Simulatoren behøver ikke at nde denne tilstand i et beregningsskridt, den kan sagtens beregne ere mellemliggende tilstande (eng. inbetween states), inden den når frem til sit resultat. Brugeren af simulatoren opdager bare aldrig disse mellemliggende tilstande. Ofte benyttes en simulator i forbindelse med animationer, man låner derfor lidt af det sprog, som anvendes i forbindelse med animationer. En frame (da. billede) er det samme som en tilstand af kongurationen. Figur 4.2 viser, hvordan en simulator anvendes til at producere frames i en animation. Initial frame next frame run simulator t Inbetween 0 t t 1 2 t t 3 4 t 5 states time Figur 4.2: En simulator anvendt i et animationssystem. Læg mærke til, at uddata fra simulatoren blot er en masse positioner og hastigheder af forskellige legemer. Det er op til en animator at nde ud af at tegne alt dette og vise det visuelt. Læg også mærke til, at en animation tit benytter sig af forskellige eekter såsom lens are og motion blur (og et utal af forskellige ltre og shading teknikker) for at få en billedesekvens til at virke mere realistisk, når et menneske ser den. Vores pointe er igen, at en simulation og animation er to forskellige ting. I interaktive applikationer (og animationer) har man det, man kalder for en frame rate (da. billeder per tid). Måleenheden for frame rate betegnes med symbolet fps (frames per second), hvilket betyder billeder per sekund. Hvis man gerne vil kunne vise levende billeder, skal man som en tommelngerregel have en frame rate på omkring 30fps. Dette stiller selvfølgelig nogle hårde krav til ydeevnen af en simulator, hvis man benytter den i et realtime system, som viser levende billeder.

Del I Grundlæggende matematik 17

Hovedformålet med denne del af specialet er at hjælpe de læsere, hvor det er første gang, de stifter bekendtskab med de emner, som dette speciale omhandler. Dynamisk simulation er et emne, hvor det ofte antages, at de folk, som arbejder med emnet, har en god, bred grundlæggende forståelse for både lineær algebra og analytisk matematik. Næsten lige så ofte nævnes der også en masse forskellige numeriske løsningsmetoder til at løse forskellige matematiske problemer med, eller også antages det, at man allerede er bekendt med sådanne trivielle ting. Efter vores mening kræver det, at man har modtaget en hvis grunduddannelse i matematik og numeriske løsningsmetoder, for at man ikke lige pludselig skal føle sig på meget dybt vand, når man arbejder med dynamisk simulation. Vi håber, at vi med med denne del af specialet kan hjælpe de læsere, som ikke har et særlig godt kendskab til den anvendte matematik eller de numeriske løsningsmetoder, til at få den nødvendige ekspertise til at kunne arbejde sig igennem specialet uden alt for mange vanskeligheder. Vi forudsætter dog, at læseren af dette speciale ved, hvad en vektor er, hvad en matrix er, og kender til de mest almindelige operationer på disse. Specielt antager vi, at rotationsmatricer er velkendte. Tanken er ikke, at denne del af specialet skal kunne fungere som en lærebog i den anvendte matematik i dette speciale, i stedet for er det ment som en retningslinie, som andre kan benytte til at fokusere på lige nøjagtig den matematik, som det er nødvendigt at lære. Eventuelt kan denne del af specialet anvendes til en kort repetition for de læsere, som allerede kan matematikken. 18

Kapitel 5 Lineær algebra Dette kapitel indeholder en hel del grundlæggende matematik. Vi vil starte med at indføre de mest grundlæggende matematiske denitioner, terminologi og notation, som vi benytter. Hvis læseren allerede har en grundlæggende forståelse for matricer og quaternioner, kan dette kapitel sagtens springes over, uden at man kommer til at ødelægge forståelsen for resten af dette speciale. 5.1 Matricer Vi lægger ud med at gennemgå forskellige typer af matricer samt nogle af deres egenskaber. Denition 1: Diagonal matrix En kvadratisk matrix, D, kaldes for en diagonal matrix, hvis der gælder: D ji = 0 hvis i j Det er kun elementerne D ii, som har lov til at være forskellig fra nul. Denition 2: Enhedsmatricen Nedenstående matrix kaldes for enhedsmatricen. 1 0... 0 I = 0 1..... 0 0... 0 1 Denne matrix er lidt speciel, fordi når man foretager matrixmultiplikation med den, så ændrer den ikke noget. Det vil sige, der gælder, at v = I v, v T = v T I, M = MI og M = IM. Symbolet I for enhedsmatricen er lidt uheldig, når man arbejder med klassisk mekanik. I klassisk mekanik benytter man noget, som hedder en inertimatrix, 19