Examensarbete. Diskret krökning, en jämförelse. Patrik Karlsson
|
|
- Maj Fredriksson
- för 6 år sedan
- Visningar:
Transkript
1 Examensarbete Diskret krökning, en jämförelse. Patrik Karlsson LiTH - MAT - EX / SE
2
3 Diskret krökning, en jämförelse. Matematik och tillämpad matematik, Linköpings Universitet Patrik Karlsson LiTH - MAT - EX / SE Examensarbete: 16 hp Level: G2 Handledare: M. Izquierdo, Matematik och tillämpad matematik, Linköpings Universitet Examinator: G. Bergqvist, Matematik och tillämpad matematik, Linköpings Universitet Linköping: juni 2012
4
5 Sammanfattning I detta kandidatarbete undersöker och jämför vi två olika metoder för att approximera gauss- och medelkrökningen hos en yta i rummet som är given som en mängd av punkter. Det är viktigt att försöka få en bra analogi mellan diskret krökning och analytisk krökning då man ofta startar med en mängd punkter i de praktiska fallen, som t ex i tillverkningsindustrin, igenkänning av objekt (inscannade bilder) och datorgrafik. Givet dessa punkter och en bra approximation av gauss- och medelkrökningen kan man få mer information om ytans geometri och beteende. För att kunna förstå dessa begrepp och metoder/algoritmer så behandlas först den bakomliggande teorin och sedan metoderna. Den första metoden är att återge ytan med hjälp av Bézierytor, vilka vi kan utföra geometriska operationer på utan problem och även få fram gauss- och medelkrökningen. Den andra metoden kommer från artikeln Discrete Differential-Geometry Operators for Triangulated 2-Manifolds av Mark Meyer, Mathieu Desbrun, Peter Schröder och Alan H. Barr. Deras approximationer av krökningarna kräver en triangulering av ytan, vilket de inte ger någon algoritm för. De tittar på ett område runt varje punkt och approximerar krökningarna genom detta område, även Gauss-Bonnets sats används för approximering av gausskrökningen. Mina simuleringar visar att Bézierytornas approximationer av gauss- och medelkrökningar är konvergenta och att alla värden ligger relativt nära varandra. Artikelns algoritm fungerar bra för gauss- och medelkrökning men deras algoritm beror väldigt mycket på trianguleringen vilket gör att man behöver ha krav på den triangulerade ytan, vilket i sig är ett svårt problem att lösa. Abstract In this thesis we analyze and compare two different methods for approximating the Gauss and mean curvature on a surface, which is given as a set of points. It is important to find a method that agrees well with the analytic Gauss and mean curvatures and guarantees robust estimations. There is a great interest in Gauss and mean curvature since these two curvatures give information about the local geometry of the surface around the point at which these curvatures are calculated. The thesis begins with a short overview of differential theory and then the methods are explained and described. The reason for this is to give the reader an understanding of the theory before explaining the methods. The first method is called Bézier surfaces, which interpolates the given Karlsson, v
6 vi points. These surfaces are differentiable which makes it possible to approximate the Gauss and mean curvature, and are therefore very well suited for our problem. The second method comes from the research article Discrete Differential- Geometry Operators for Triangulated 2-Manifolds by Mark Meyer, Mathieu Desbrun, Peter Schröder and Alan H. Barr. Their algorithm requires a triangulated surface, which itself is a hard problem to solve (at least if one has requirements on the triangulation). Their approximations of the Gauss and mean curvatures use a well chosen area around the point, and the Gauss curvature also makes use of the Gauss-Bonnet theorem. My simulations show that Bézier surfaces approximate both Gauss and mean curvature well, and the approximations seem to converge to the analytic value when the information gets better. The articles algorithm also works well for approximating both curvatures, though this method seems to depend somewhat on the triangulation. This gives some requirements on the triangulation and will therefore be a harder problem to solve. The approximations do not converge when given a triangulation with obtuse triangles, though it shows signs to do so. Keywords: Bézier, Bézierkurva, Bézieryta, Diskret krökning, Diskret geometri, Fundamentalformer, Principalkrökning, Normalkrökning, Gausskrökning, Medelkrökning, Gauss-Bonnet, Ytor, Differentialgeometri, Triangulering URL for electronic version:
7 Tack Jag vill tacka min handledare Milagros Izquierdo för hennes hjälp genom hela arbetet och för vägledningen jag fått. Jag vill även tacka min opponent Adam Schill Collberg för att han haft tålamod med mina förseningar och för att han ville opponera på mitt arbete och framläggningen. Karlsson, vii
8 viii
9 Terminologi Symboler (x,y) Skalärprodukten av x och y x Vektornormen av x σ x Den partiella derivatan av σ med avseende på variabeln x υ Farten hos en kurva I Första fundamentalformen II Andra fundamentalformen F I Första fundamentalformen representerad av en matris F II Andra fundamentalformen representerad av en matris W Weingartenavbildningen γ(t) Derivatan av γ γ (t) Derivatan av γ med avseende på parametriseringen med fart 1 K, κ G Gausskrökningen ˆκ G Diskreta gausskrökningen κ n Diskreta medelkrökningen H Medelkrökningen κ n Normalkrökningen κ g Geodetiska krökningen κ 1, κ 2 Principalkrökningar Karlsson, ix
10 x
11 Innehåll 1 Inledning 1 2 Differentialgeometri Ytor Definition och egenskaper Normaler och tangentplan Krökningar Första fundamentalformen Andra fundamentalformen Normalkrökning och principalkrökningar Gausskrökning Geodeser och geodetisk krökning Gauss-Bonnets sats Algoritmer Bézierytor Bézierkurvor Bézierytor Triangulering av ytor i R Delaunay triangulering Triangulerings-algoritmen Kommentarer Artikeln Discrete Differential-Geometry Operators for Triangulated 2-Manifolds Diskretisering av geometriska egenskaper Approximation av gausskrökning Artikelns resultat Resultat Resultat för Bézierytor Resultat för Discrete Diffierential-Geometry Operators for Triangulated 2-Manifolds algoritm Slutsatser och diskussion 45 A Matlabkoder 49 A.1 beziercurvature A.2 Beziersurface A.3 diffbezier Karlsson, xi
12 xii Innehåll A.4 discurv A.5 discurv A.6 renderbsurface A.7 triangulate
13 Tabeller 3.1 Artikelns resultat Approx. med Bézieryta av 49 punkter Approx. med Bézieryta av 256 punkter Approx. med Bézieryta av 1024 punkter Approx. med Bézieryta av punkter Approx. av krökningar med triangulering av 49 punkter Approx. av krökningar med triangulering av 256 punkter Approx. av krökningar med triangulering av 1024 punkter Approx. av krökningar med triangulering av punkter Approx. av krökningar med konvexa höljet, 256punkter Approx. av krökningar med konvexa höljet, 1024 punkter Approx. av krökningar med konvexa höljet, punkter Bästa approximationerna av gausskrökningen Bästa approximationerna av medelkrökningen Tidsåtgång för algoritmerna Karlsson, xiii
14 xiv Tabeller
15 Figurer 2.1 Inre vinkel α och yttre vinkel β Grafen över B(t) och kontrollfiguren Grafen av B(t) Triangulering av halvsfären Voronoiområdet för en triangel ringsområde Bézieryta av 49 punkter Bézieryta av 256 punkter Bézieryta av 1024 punkter Triangulering av 49 punkter Triangulering av 256 punkter Triangulering av 1024 punkter Konvexa höljet av sfären med 256 punkter Konvexa höljet av sfären med 1024 punkter Karlsson, xv
16 xvi Figurer
17 Kapitel 1 Inledning Krökning av kurvor och ytor började med Carl Friedrich Gauss och hans verk General investigations on curved surfaces. I verket presenterade han gausskrökningen, vilket gav upphov till ett nytt sätt att se på krökningen av en yta. Speciellt ger gausskrökningen information om ytans lokala geometriska egenskaper, dvs hur ytan beter sig i ett område runt punkten som gausskrökningen är beräknad i. Just dessa egenskaper gör krökningar, och kanske främst gauss- och medelkrökningar, till ett bra verktyg för tillämpningar där det behövs information om ytors lokala geometri. Krökningar tillämpas inom flera områden som grafisk design, datorgrafik, design av produkter i tillverkningsindustrier, igenkänning av inscannade bilder (igenkänning av objekt), bil- och båtbranschen för tillverkning av chassin etc. T ex datorgrafik använder sig av krökningar för att beräkna hur ljus ska reflekteras från en yta (av ett objekt) och digitala bilder kan förfinas med hjälp av krökningar. Däremot så används datorer inom dessa områden, vilket gör att det inte går att beräkna krökningar med analytiska metoder och det behövs en diskretisering. Denna diskretisering av krökningar bör ha en stark analogi med den analytiska och vara relativt enkel att implementera. Samtidigt som diskretiseringen helst ska ha begränsat fel som minskar om mängden information ökar, t ex fler punkter på ytan bör ge bättre approximation av krökningen. Man behöver även ha i åtanke hur ytorna är representerade, är ytan interpolerad eller används någon form av nätverk mellan punkterna och hur approximationer av krökningar ska ske på sådana ytor. I detta arbete används två olika metoder för att representera en yta och approximera krökningar. Den första metoden är Bézierytor och då den används väldigt mycket inom de nämnda områdena så blev den självklar att testa och jämföra med. Bézierkurvor/ytor uppkom och utvecklades på 60-talet av två fransmän, Pierre Bézier som jobbade på bilföretaget Renault och Paul de Casteljau som jobbade på Citröen. Den andra metoden kommer från forskningsartikeln [2]. De använder sig av en triangulerad yta och approximerar gausskrökningen med Gauss-Bonnets sats. Karlsson,
18 2 Kapitel 1. Inledning Indelning av rapporten I kapitel 2 tas all nödvändig bakgrundsteori upp för att kunna få full förståelse för alla begrepp och metoder i senare delar av rapporten. I kapitel 3 beskrivs algoritmerna för Bézierytor, triangulering och artikelns approximation av gauss- och medelkrökningen. I kapitel 4 presenteras resultaten av mina simuleringar som är gjorda i Matlab. Rapporten avslutas med att i kapitel 5 diskutera resultaten och dra slutsatser av simuleringarna. Det ges även förslag på hur arbetet kan fortsättas och andra intressanta metoder man kan testa/använda.
19 Kapitel 2 Differentialgeometri 2.1 Ytor Ytor i 3 dimensioner (och framförallt ytor givna av en mängd punkter) används mycket inom datorgrafik, visualiseringar av t ex inscannade objekt, hantering av bilder, inom datorspel, bil- och båtbranschen för visualisering och ändringar av chassin, design av produkter inom industri etc. I detta avsnitt tar jag upp de fundamentala delarna av teorin för ytor, speciellt den teori som krävs för att få en god förståelse av vad krökning är och hur den beräknas. För den som vill läsa mer om ytor kan detta göras i [5], [6] och [7]. I [5] tas det upp olika former av ytor, bl a Bézierytor och B-spline ytor, och den har stort fokus på tillämpningar inom datorgrafik, [6] tar upp grundläggande definitioner och satser rörande ytor som behövs främst inom analys och [7] behandlar ytor från ett geometriskt synsätt och är den bok som är mest rigorös och omfattande inom ämnet Definition och egenskaper Vi börjar med att definiera vad homeomorfism är Definition 1. Om en funktion f : X Y är kontinuerlig och bijektiv, och dess invers f 1 : Y X också är kontinuerlig så kallas f en homeomorfism. X och Y sägs då vara homeomorfa. Om f och f 1 dessutom är deriverbara kallas f för en diffeomorfism [7]. Intuitivt är en yta S i R 3 en mängd som täcks av delmängder som är som planet; dvs man har en samling homeomorfier σ : U W S. Sådana homeomorfier kallas för kartor, parametriseringar eller koordinatsystem. Definition 2. En homeomorfism σ : U R 3 kallas för en reguljär karta om: 1. Den är oändligt deriverbar. 2. Vektorerna σ x och σ y är linjärt oberoende i varje punkt p = (x, y) U ( σ x σ y 0 ) [7]. Speciellt kommer vi kräva att varje reguljär karta är en diffeomorfism. Karlsson,
20 4 Kapitel 2. Differentialgeometri Exempel Enhetssfären S 2 = {(x, y, z) R 3 x 2 + y 2 + z 2 = 1} är en yta med den vanliga parametriseringen: σ(θ, φ) = (cosθcosφ, cosθsinφ, sinθ) Vi kan inte låta (θ, φ) variera fritt, ty då hade inte σ varit injektiv. Vi kan heller inte skapa en karta om vi låter; π 2 θ π 2, 0 φ 2π eftersom denna mängd inte är en öppen delmängd i R 2 (dock täcker de hela ytan) och vi får problem med inversen. Däremot kan vi skapa den öppna mängden: U = {(θ, φ) π 2 < θ < π 2, 0 < φ < 2π} Men nu täcker inte denna karta hela sfären, utan vi måste hitta en till karta som täcker den sista delen (som är en halvcirkel på ytan given av punkterna (x,0,z) med x 0). Idén blir då att skapa en annan parametrisering som liknar den vi har, men som inte täcker en del av sfären som redan täcks av våran första karta. Detta görs lämpligen genom att rotera σ så att den icke täckta ytan hamnar på den delen som σ täcker. Om vi roterar först med π radianer runt z-axeln och sedan med π/2 runt x-axeln får vi: ˆσ(θ, φ) = ( cosθcosφ, sinθ, cosθsinφ) Med samma öppna mängd U som σ, ges den icke täckta cirkeln för ˆσ av punkterna (x, y, 0) med x 0. Det är klart att dessa halvcirklar inte skär varandra och därför har vi nu två kartor som täcker hela sfären och därmed är sfären en yta. Samlingen av dessa kartor ger upphov till en atlas för S. Dvs varje punkt p S finns på minst en av dessa kartors bild, där kartan tillhör atlasen för S. Kartor kan mycket väl ha gemensamma punkter (och ibland fler gemensamma punkter än icke-gemensamma punkter), dvs två kartor överlappar varandra vilket innebär att σ(x, y) = p = ˆσ(ˆx, ŷ), där p är en punkt på ytan. Vi får följande definition. Definition 3. Låt σ : U S W och ˆσ : Û S Ŵ vara två kartor för ytan S. Vidare, låt p S W Ŵ. Då vi vet att σ och ˆσ är inverterbara på mängden S W Ŵ så två öppna mängder V U och ˆV Û, så att ψ = σ 1 ˆσ : ˆV V är en diffeomorfism och kallas för en överföringsfunktion, vilket ger oss: ˆσ(ˆx, ŷ) = σ(ψ(ˆx, ŷ)) ˆσ = σ ψ : ˆV R 3 Alltså är ˆσ en omparametrisering av σ. [7] För att lättare förstå begreppen så illustrerar vi med ett exempel.
21 2.1. Ytor 5 Exempel Låt oss titta på sfären S 2 som kan täckas med den stereografiska projektionen, vi börjar med kartan σ S : R 2 S 2 \ {(0, 0, 1)}: ( (x, y) 2x x 2 + y 2 + 1, 2y x 2 + y 2 + 1, 1 x2 y 2 ) x 2 + y Denna karta täcker alltså hela sfären förutom (0, 0, -1), dvs sydpolen. För att täcka sydpolen tar vi kartan σ N : R 2 S 2 \ {(0, 0, 1)}: ( (x, y) 2x x 2 + y 2 + 1, 2y x 2 + y 2 + 1, x2 + y 2 ) 1 x 2 + y Dessa kartor är reguljära, ty deras partiella derivator av godtycklig ordning är kontinuerliga och de första derivatorna linjärt obeorende. Vidare så existerar det inverser till dessa två kartor, nämligen: ( ) x σ 1 S (x, y, z) = z + 1, y z + 1 ( ) x σ 1 N (x, y, z) = 1 z, y 1 z Alltså är dessa kartor diffeomorfismer; derivatan hos kartan och inversen existerar. Överföringsfunktionen mellan dessa kartor bestäms med inverserna, vilket ger: σ 1 N ( ) x σ S = σ 1 S σ N = x 2 + y 2, y x 2 + y 2. Vi definierar vad som menas med att en yta är snäll: Definition 4. En yta S är snäll om dess atlas består av reguljära kartor och alla överföringsfunktioner är oändligt deriverbara. [7] Detta innebär att vi lokalt på ytan S kan utföra operationer, i och med att vi har så pass snälla kartor. Vi kommer hädanefter antag att alla ytor är tillräckligt deriverbara (snälla) då det krävs. Exempel Vi fortsätter att titta på enhetssfären S 2, dock ska vi ta fram en del av S 2 : S = {(x, y, z) x 2 + y 2 + z 2 = 1, x > 0, y > 0, z > 0} Det är denna del av sfären som jag sedan använder mig av för att testa hur bra krökningen approximeras för diskreta algoritmer. Nu ska vi titta på den karta σ som täcker detta område. Vi börjar med att hitta en öppen mängd U i R 2 : U = {(x, y) x 2 + y 2 < 1, x > 0, y > 0} Eftersom vi vill kunna bestämma krökningen senare så behöver vi en differentierbar yta, dvs vi vill att kartan ska vara en diffeomorfism. Vi låter därför σ definieras av:
22 6 Kapitel 2. Differentialgeometri σ : (x, y) (x, y, 1 x 2 y 2 ) Enligt definitionen så ska vi även hitta en öppen mängd W R 3, dock är σ en homeomorfism och tar öppna mängder till öppna mängder (dvs σ(u) är också öppen). Vi ser att denna funktion är deriverbar, ty den består av elementära funktioner och alla koordinater kommer vara väldefinierade. Vidare så hittar vi en invers till denna funktion enkelt, vi behöver bara projicera ner koordinaterna i xy-planet: σ 1 : (x, y, z) (x, y) även denna funktion är deriverbar och vi har alltså en karta (yta) som är reguljär och därmed tillräckligt deriverbar (dvs σ är en diffeomorfism) Normaler och tangentplan För att kunna beräkna krökningar kommer vi behöva veta hur man beräknar normaler och vad tangentplan är. Tangentplan är viktiga då varje yta kan approximeras kring en punkt p mha tangentplanet, vilket ger en linjär approximation av ytan runt p (vilket även är känt som Taylor-utvecklingen av ytan kring punkten p av första graden). Då vi vill veta krökningen i enskilda punkter så kommer vi ha stor nytta av tangentplan och approximationen blir bra. Definition 5. Tangentplanet T p i punkten p S är det plan som innehåller alla tangentvektorer (vid punkten p) för varje kurva i S som passerar punkten p [7]. Kom ihåg att vi arbetar med reguljära kartor σ : U S och vi har därför alltid tangentplan i alla punkter på våra ytor. Vi kan även få fram två vektorer som spänner upp T p tack vare följande sats: Sats 1. Tangentplanet T p vid punkten p S är vektorrummet som spänns upp av vektorerna σ x och σ y, då dessa är uträknade i punkten p [7]. Beviset bygger på att derivera en kurva γ(t) = σ(x(t), y(t)), då ser man med kedjeregeln att derivatan är en linjärkombination av σ x och σ y. Tack vare att vi har två linjärt oberoende vektorer vid punkten p S så kan vi beräkna en normal till tangentplanet vid p (och ytans normal vid punkten p), ty vi kan alltid räkna ut σ x, σ y och därmed (enhets)normalen: N σ = där derivatorna är beräknade i punkten p. σ x σ y σ x σ y, Exempel Betrakta ytan som vi hade i senaste exemplet: S = {(x, y, z) x 2 + y 2 + z 2 = 1, x > 0, y > 0, z > 0} Vi vet från förra exemplet att en parametrisering är given av σ : (x, y) (x, y, 1 x 2 y 2 ). Deriverar vi σ får vi: σ x x = (1, 0, 1 x2 y ) 2 y σ y = (0, 1, 1 x2 y ) 2
23 2.2. Krökningar 7 Vi ser att dessa två är linjärt oberoende, så vi beräknar enhetsnormalen vid punkten p = (1/2, 1/2): σ x(1/2, 1/2) = (1, 0, 1 2 ), σ y(1/2, 1/2) = (0, 1, 1 2 ) N σ = (1, 0, 1 2 ) (0, 1, 1 2 ) (1, 0, 1 2 ) (0, 1, 1 2 ) = (1 2, 1 2, 1 2 ). 2.2 Krökningar Krökningen av en yta är ett mått på hur mycket en kurva/yta böjer sig i en given punkt, det finns två sätt att mäta det på: det första är att mäta krökningen på kurvor genom punkten och det andra att mäta hur normalen till ytan ändrar sig i olika riktningar. Krökningen av kurvor genom punkten har två delar, den geodetiska som säger hur kurvan kröker sig inom ytan och den normala krökningen som säger hur kurvan kröker sig med ytan. Den sistnämnda är den krökning vi är ute efter. Krökning av ytor ger information om ytans geometri, och spelar därför stor roll inom t ex datorgrafik. Om man vill återskapa en yta från givna punkter så kommer en bra approximation av krökningen kunna ge mer information om hur ytan ser ut och beter sig. Detta används för att ge bättre bilder, reflektion av ljus, igenkänning av objekt, visualisering av objekt etc. Vi kommer i detta avsnitt att definiera γ som den vanliga derivatan av en kurva, och γ som derivatan av funktionen med den parametrisering som ger fart Första fundamentalformen Med hjälp av första fundamentalformen så kommer vi kunna beräkna avstånd på ytor, dvs vi kan ta fram kortaste avståndet mellan två punkter på en yta om vi bara kan förflytta oss på den ytan. Den första fundamentalformen ger oss också ett sätt att beräkna vinklar och area på ytan. För den som vill läsa mer om första fundamentalformen så rekommenderar jag [7]. Antag att vi har en parametriserad kurva γ på en karta σ till ytan som ges av: γ(t) = σ(x(t), y(t)). Då vet vi från analysen att kurvlängden s från en punkt t 0 ges av: s = t t 0 γ(τ) dτ, där γ är den Euklidiska normen. Farten av en kurva γ ges av υ = γ(t) = ṡ. Användning av kedjeregeln på en kurva γ(t) ger: γ(t) = ṡγ (t) = υγ (t). Vi har därmed olika derivator av kurvan beroende på farten, som i sin tur beror på parametriseringen av kurvan. Användning av kedjeregeln ger även γ(t) = σ xẋ + σ yẏ =
24 8 Kapitel 2. Differentialgeometri där γ(t) 2 = (σ xẋ + σ yẏ, σ xẋ + σ yẏ) = (σ x, σ x)ẋ 2 + (σ x, σ y)ẋẏ + (σ y, σ x)ẏẋ + (σ y, σ y)ẏ 2 = (σ x, σ x)ẋ 2 + 2(σ x, σ y)ẋẏ + (σ y, σ y)ẏ 2 = Eẋ 2 + 2F ẋẏ + Gẏ 2 E = σ x 2, F = (σ x, σ y), G = σ y 2. Sätter vi in γ(t) = γ(t) 2 = Eẋ 2 + 2F ẋẏ + Gẏ 2 i integralen får vi s = t t 0 (Eẋ 2 + 2F ẋẏ + Gẏ 2 ) 1/2 dτ Den första fundamentalformen för σ ges av I = Eẋ 2 + 2F ẋẏ + Gẏ 2 vilket kan representeras av följande matris [ ] E F F I = F G eftersom den är kvadratisk. Vinklar på ytan fås genom att använda skalärprodukten, och därifrån göra de nödvändiga förenklingarna/omskrivningarna för att till slut få ett samband med den första fundamentalformen. Arean av en del av ytan kommer från att använda beloppet av kryssprodukten, som man sedan integrerar över det området man vill ha arean för (alltså en dubbelintegral). Det går sedan att visa att man integrerar det(f I ) 1/2 över denna delen av ytan. Vill man läsa mer om dessa två och deras kopplingar till första fundamentalformen så är [7] en utmärkt bok. Exempel Vi vill bestämma avståndet mellan t = 0 och t = 1 på kurvan γ(t) = σ(θ(t), φ(t)) = (cos(tπ), sin(tπ), 0), med θ(t) = 0 t, φ(t) = tπ, där parametriseringen σ ges av: σ(θ, φ) = (cosθcosφ, cosθsinφ, sinθ), 0 < φ < 2π, π 2 < θ < π 2. Direkt insättning i formeln för att mäta avstånd ger: s = 1 γ(t) dt = Vi jämför med första fundamentalformen: π2 (( sinφ) 2 + (cosφ) )dφ = π 0 = π.
25 2.2. Krökningar 9 Vi får då: s = 1 0 σ θ = ( sinθcosφ, sinθsinφ, cosθ) E = 1 σ φ = ( cosθsinφ, cosθcosφ, 0) G = cos 2 θ F = (σ θ, σ φ) = 0 θ(t) = 0 φ(t) = π Vi får samma avstånd. E θ 2 + F θ φ + G φ 2 dt = Andra fundamentalformen 1 0 π2 cos 2 (θ(t))dt = π. Krökningen av en kurva i R 2 definieras som κ = γ. Men för att kunna definiera krökningen av en yta i R 3 behöver vi en annan tolkning av krökningen hos kurvor i R 2. Vi behöver alltså veta hur mycket en kurva i planet avviker från sin tangent t = γ/ γ i punkten p, dels i tangentplanet, geodetisk krökning, dels längs normalen till ytan, normal krökning. Det kan göras med Taylors formel, antag därför att vi har en kurva γ(t) som har parametriseringen med fart 1. När parametern t ändras till t + t så flyttar kurvan bort från tangenten (i γ(t)) med avståndet ((γ(t + t) γ(t)), n), där n är normalen till γ i punkten t. Med Taylors formel får vi γ(t + t) = γ(t) + γ(t) t γ(t)( t)2 + rest där rest/( t) 2 0 när t 0. Principalnormalen n är ortogonal mot enhetstangenten t = γ och γ = ṫ = κn, där κ alltså är krökningen av γ som ges av κn = κ g N t + κ n N. Vi får alltså att ( γ, n) = κ och ( γ, n) = 0 vilket ger: (γ(t + t) γ(t), n) = ( γ(t) t γ(t)( t)2 + rest, n) = 1 2 κ( t)2 + rest Vi har alltså fått ett annat sätt att tolka krökningen på, och gör nu samma sak med en karta i R 3. Låt σ vara en karta i R 3 med enhetsnormalen N. Då får vi analogt med kurvor att kartans avvikelse från tangentplanet i punkten σ(x, y) ges av (σ(x + x, y + y) σ(x, y), N). Taylorutveckling i två variabler av σ(x + x, y + y) σ(x, y) ger: σ(x+ x, y+ y) σ(x, y) = σ x x+σ y y+ 1 2 ( σ xx( x) 2 +2σ xy x y+σ yy( y) 2) +rest Som för kurvan så gäller det att N är ortogonal mot tangentvektorerna σ x och σ y, och (rest)/(( x) 2 +( y) 2 ) 0 när ( x, y) 0. Vi får då att kartans avvikelse från tangentplanet blir:
26 10 Kapitel 2. Differentialgeometri där 1( L( x) 2 + 2M x y + N( y) 2) + rest 2 L = (σ xx, N), M = (σ xy, N) och N = (σ yy, N). Man definierar den andra fundamentalformen som II = Ldx 2 + 2Mdxdy + Ndy 2 vilket kan representeras på matrisform med [ ] L M F II = M N Exempel Vi skall beräkna den andra fundamentalformen för σ(x, y) = (x, y, x 2 + y 2 ). Vi börjar med att räkna ut alla partiella derivator och andraderivator. σ x = (1, 0, 2x) σ xx = (0, 0, 2) σ y = (0, 1, 2y) σ yy = (0, 0, 2) σ xy = (0, 0, 0) Sedan behöver vi enhetsnormalen N för att få ut den andra fundamentalformen: σ x σ y = ( 2x, 2y, 1) σ x σ y = 4x2 + 4y N = σ x σ y σ x σ y = λ( 2x, 2y, 1) där λ = 1 4x2 + 4y Koefficienterna till den andra fundamentalformen blir L =λ((0, 0, 2), ( 2x, 2y, 1))= 2λ M = 0 N =λ((0, 0, 2), ( 2x, 2y, 1))= 2λ Vi får därmed att den andra fundamentalformen är 2λ(dx 2 + dy 2 ).
27 2.2. Krökningar 11 Exempel Vi vill bestämma den andra fundamentalformen till enhetssfären S 2, på kartan given av σ(θ, φ) = (cosθcosφ, cosθsinφ, sinθ), π 2 < φ, θ < π 2. Vi får: σ θ = ( sinθcosφ, sinθsinφ, cosθ) σ φ = ( cosθsinφ, cosθcosφ, 0) σ θθ = ( cosθcosφ, cosθsinφ, sinθ) σ φφ = ( cosθcosφ, cosθsinφ, 0) σ θφ = (sinθsinφ, sinθcosφ, 0) N = σ θ σ φ σ θ ( cosθcosφ, cosθsinφ, sinθ), σ φ = vilket ger oss L = 1, M = 0, N = cos 2 θ och andra fundamentalformen blir dθ 2 + cos 2 θdφ Normalkrökning och principalkrökningar Ett annat naturligt sätt att mäta krökningen av en yta är att använda sig av kurvor i ytan. Antag att vi har en kurva γ(t) = σ(x(t), y(t)) med fart 1, då gäller att γ är ortogonal mot ytans normal N och båda är enhetsvektorer. Tillsammans med vektorn given av N t så spänner dessa upp R 3, dvs {t, N, N t} är ett ON-system. Eftersom γ t så får vi γ = κ n N + κ g (N t), där κ n kallas för normalkrökningen och κ g geodetiska krökningen. Alltså är κ n krökningen som kurvan får från ytan och κ g krökningen som kurvan har inom ytan. Då N N t kan vi definiera normalkrökningen κ n enligt följande Definition 6. Normalkrökningen κ n i en punkt p till en reguljär kurva γ i en yta S med fart 1 definieras av κ n = (γ, N), där γ = κn där κ är kurvans krökning i punkten p, N är enhetsnormalen till ytan i punkten p och n är kurvans enhetsnormal i punkten p [7]. Ett enkelt sätt att beräkna normalkrökningen ges av följande sats: Sats 2. Om γ(t) = σ(x(t), y(t)) är en kurva med fart 1 på en karta σ så ges normalkrökningen κ n av κ n = Lẋ 2 + 2Mẋẏ + Nẏ 2, där Ldx 2 + Mdxdy + Ndy 2 är andra fundamentalformen för σ. [7] Sambandet κ n = (γ, N) och användning av kedjeregeln bevisar satsen. Eftersom andra fundamentalformen är kvadratisk så kan vi även ge ett uttryck för normalkrökningen på matrisform:
28 12 Kapitel 2. Differentialgeometri κ n = [ ẋ ẏ ] [ ] [ẋ ] L M M N ẏ Nu har vi dock antagit att γ har fart 1, däremot vållar det inga bekymmer att ta en annan kurva med godtycklig fart. Eftersom κ n = (γ, N) och γ = υγ γ = υγ + υ 2 κn (kedjeregeln ger: d/dt = d/ds ds/dt, där ds/dt = υ) och vi får då att ( γ, N) = ( υγ + υ 2 κn, N) = υ 2 (κn, N) = υ 2 κ n. Vi får alltså: κ n = T t F II T υ 2 κ n = T t F II T T t F I T, där T = [ẋ ] för kurvor med godtycklig fart υ. Normalkrökningen i en punkt p på σ skiljer sig enbart om de valda kurvorna genom p har olika tangentriktningar, dvs normalkrökningen beror på i vilken riktning vi tar kurvan och vilken punkt på ytan vi väljer. Givet en punkt på ytan så finns det alltså olika värden på normalkrökningen och då finns det även ett maximum och minimumvärde, som kallas principalkrökningar. De riktningar som ger upphov till dessa principalkrökningar kallas för principalriktningar. Principalkurvorna (integrerande kurvor till principalvektorerna) är profilkurvor som ger information om hur ytan ser ut, vilket är mycket användbart inom datorgrafik. I artikeln Curvature and torsion feature extraction from freeform 3-D meshes at multiple scales av A. Hilton, J. Illingworth, A.J. Stoddart och T. Windeatt studeras principalkurvorna diskret [4]. Definition 7. Principalkrökningarna till en karta är rötterna till: det(f II kf I ) = 0. och principalvektorerna på formen t = ξσ x + ησ y med principalkrökning κ i uppfyller följande ekvation [ ] ξ (F II κ i F I )T = 0, T =. [7] η Det går även att skriva om definitionen, F I är inverterbar ([7] proposition 5.2) och vi får därmed: det(f I 1 F II ki) = 0 Alltså är principalkrökningarna egenvärdena till W = F I 1 F II, denna avbildning kallas för Weingartenavbildningen. Weingartenavbildningen W ger hur N ändrar sig i de olika riktningarna omkring punkten. Vi illustrerar med ett exempel. Exempel Vi vill räkna ut principalkrökningarna och principalriktningarna till enhetssfären S 2 med parametriseringen: Vi vet sedan tidigare att σ(θ, φ) = (cosθcosφ, cosθsinφ, sinθ). ẏ
29 2.2. Krökningar 13 σ θ = ( sinθcosφ, sinθsinφ, cosθ) σ φ = ( cosθsinφ, cosθcosφ, 0) II = dθ 2 + cos 2 θdφ 2 och därmed får vi första fundamentalformen till: E = σ θ 2 = 1, F = (σ θ, σ φ) = 0, G = σ φ 2 = cos 2 θ. Låt oss nu räkna ut principalkrökningarna: [ ] 1 κ 0 det(f II κf I ) = det 0 cos 2 θ κcos 2 = cos 2 θ(1 κ) 2 = 0 θ Vi får alltså dubbelrötterna κ 1,2 = 1 och principalriktningarna är vilken tangentriktning som helst. Alltså är krökningen 1 överallt på sfären (och även på den karta som jag jämfört algoritmerna på), vilket den borde vara Gausskrökning Oftast används två andra sorters krökningar, nämligen gausskrökning och medelkrökning. Dessa två bygger på principalkrökningarna, men de spelar dock större roll för ytans geometri än principalkrökningarna. Definition 8. Givet de två principalkrökningarna κ 1 och κ 2 till en karta σ, så definieras gausskrökningen som: och medelkrökningen definieras av: K = κ 1 κ 2 H = 1 2 (κ 1 + κ 2 ) [7]. Gausskrökningen ändras inte av omparametrisering och är därmed väldefinierad för en yta. Medelkrökningen däremot kan ändra tecken vid omparametrisering. Det är ganska enkelt att få fram en formel för beräkning av gausskrökningen K, eftersom vi visat att principalkrökningarna är egenvärdena till Weingartenavbildningen W = F I 1 F II. Vi får då från linjär algebra: som vi kan skriva om till det(w) = det(f I 1 F II ) = det(f II) det(f I ) = κ 1κ 2 = K, K = LN M 2 EG F 2, där L, N, M är koefficienterna i andra fundamentalformen och E, G, F är koefficienterna i första fundamentalformen. Det är även relativt enkelt att få fram en formel för beräkning av medelkrökningen H = 1 2 (κ 1 + κ 2 ), vi utgår från Weingartenavbildningen igen och får från linjär algebra:
30 14 Kapitel 2. Differentialgeometri H = 1 2 T r(w) = 1 / 2 T r(f I 1 F II ) = F 1 I = 1 [ ] / G F = detf I F E = 1 ( [ ] ) 2 T r 1 LG MF MG NF LG 2MF + NE = det(f I ) LF + ME MF + NE 2(EG F 2 ) där T r är spåret. Vi får alltså följande formel för medelkrökningen H = LG 2MF + NE 2(EG F 2. ) Anledningen till att vi vill ha dessa formler är för att det är kostsamt att beräkna inversen och det kan bli stora fel om matriserna har dåliga konditionstal (när vi gör detta genom datorn). Det är ju även skönt att ha enkla formler om man gör det för hand, istället för att hålla på med en massa extra beräkningar för att få fram inversen och sedan beräkna egenvärdena. Dessa formler för gauss- och medelkrökning tillåter oss att använda enkla algoritmer med olika diskretiseringar, som t ex Gauss-faltningen. I [3] kan man läsa mer om Gauss-faltning. Exempel Beräkna gauss- och medelkrökningen i punkten (1,1) för följande karta: σ(x, y) = (x, y, x 2 + y 2 ) Vi börjar med att hitta koefficienterna för första och andra fundamentalformen: σ x(1, 1) = (1, 0, 2), σ y(1, 1) = (0, 1, 2) ( 2, 2, 1) N = 3 σ xx(1, 1) = (0, 0, 2), σ xy(1, 1) = (0, 0, 0), σ yy(1, 1) = (0, 0, 2) E = 5, F = 4, G = 5. L = 2 3, M = 0, N = 2 3 och vi kan då få ut gauss- och medelkrökningen: K = LN M 2 EG F 2 = H = LG 2MF + NE 2(EG F 2 ) = 4 81 = = Geodeser och geodetisk krökning En geodes är en kurva på en yta som uppfattas som rak om man står på ytan. Det lättaste exemplet är om man vill ha ut kortaste vägen mellan två punkter
31 2.2. Krökningar 15 på en yta, då kommer den vägen alltid att vara en geodes (givet att ytan inte har några hål ). Geodeser och geodetisk krökning kommer vara en viktig del för att kunna förstå approximationen av gausskrökningen i avsnitt 2.3. Vi kommer att börja med definitionen och sedan ta upp viktiga propositioner som kommer hjälpa oss förstå artikeln ([2]) bättre. Definition 9. En kurva γ på en yta S kallas för en geodes om 1. γ = 0 t eller 2. γ S i γ(t) t γ N S t, där N S är enhetsnormalen till S. [7] Det går att visa att farten hos en geodes är konstant och speciellt så kan man alltid göra så en geodes har farten 1. Detta visas med hjälp av definitionen och sambandet υ = γ, se [7]. Från del 2 i definitionen fås alltså att all krökning av γ är normal, dvs κ = κ n. Vi har alltså följande: Proposition 1. En kurva på en yta är en geodes om och endast om dess geodetiska krökning, κ g, är noll överallt. [7] Denna proposition kommer användas i samband med Gauss-Bonnets sats i avsnitt 2.3. Proposition 2. En rät linje på en yta kan parametriseras så den är en geodes. [7] Den sistnämnda propositionen innebär alltså att en rät linje på en yta alltid är en geodes på ytan. Geodeser och geodetiska koordinater kan användas för beräkning av diskret krökning, det görs i artikeln [4] och i [3] Gauss-Bonnets sats Gauss-Bonnets sats är ett av de viktigaste resultaten inom teorin om ytor. En version av satsen ger ett samband mellan ytans geometriska egenskaper och dess topologiska. Denna sats finns i flertalet olika formuleringar, men jag kommer dock bara ta upp en av dessa. Detta beror på att approximeringen av gausskrökningen i [2] bygger på denna formuleringen av satsen, vilket tas upp i avsnitt 2.3. Vi måste först definiera vad en kroklinjig månghörning är. Definition 10. En kroklinjig månghörning i R 2 är en kontinuerlig avbildning π : R R 2 så att det för något reellt tal a och punkter 0 = t 0 < t 1 <... < t n = a gäller 1. π(t) = π(t ) t t = na, n N; 2. π är snäll på de öppna intervallen (t 0, t 1 ), (t 1, t 2 )... (t n 1, t n ); 3. de ensidiga derivatorna π (t i ) = lim t ti π(t) π(t i ) t t i, π + (t i ) = lim t ti π(t) π(t i ) t t i existerar för i=1,..., n och är nollskilda och inte parallella.
32 16 Kapitel 2. Differentialgeometri Vidare låter vi β i vara vinkeln mellan π i och π + i vid punkten π(t i ) [7]. En kroklinjig månghörning på en karta σ : U R 3 definieras av: Definition 11. Låt π : R U vara en kroklinjig månghörning i R 2, dvs den uppfyller föregående definition. Då får vi en kroklinjig månghörning på kartan σ genom följande avbildning: γ = σ π. Punkterna γ(t i ) är hörnen i månghörningen och de öppna intervallen (t i 1, t i ) är kanterna. Gauss-Bonnets sats för kroklinjiga månghörningar säger följande: Sats 3. Låt γ vara en positivt orienterad kroklinjig månghörning med fart 1 och n st kanter på en yta σ. Låt vidare α 1, α 2,..., α n vara de inre vinklarna och β i de yttre vinklarna vid hörnen, l(γ) vara längden av γ och int(γ) vara området som omsluts av γ. Låt området int(γ) vara 1-sammanhängande. Då gäller: l(γ) 0 κ g ds = n i=1 α i (n 2)π KdA σ, int(γ) där κ g är den geodetiska krökningen och K är gausskrökningen [7]. Att ett område är 1-sammanhängande innebär att varje sluten kurva kan krympas kontinuerligt till en punkt. Vi kan skriva om formeln i satsen och få den att bero på de yttre vinklarna β i genom att använda följande samband: vilket kan ses i följande figur: β i + α i = π α i = π β i, Figur 2.1: Inre vinkel α och yttre vinkel β.
33 2.2. Krökningar 17 Vi får då Gauss-Bonnets sats till följande: l(γ) 0 l(γ) 0 l(γ) 0 κ g ds = κ g ds = n α i (n 2)π KdA σ int(γ) n (π β i ) (n 2)π KdA σ i=1 i=1 κ g ds = 2π n i=1 β i KdA σ int(γ) Bevis och ytterligare varianter på satsen finns i [7]. int(γ) Exempel Antag att vi har en geodetisk triangel som ligger på enhetssfären, med vinklarna π/2, π/2 och α. Eftersom triangelns kanter är raka om vi står på sfären så innebär det att kanterna är geodeser, de har alltså geodetisk krökning 0. Med kunskapen om att krökningen på sfären är 1 får vi med Gauss- Bonnets sats (eftersom triangeln är en kroklinjig månghörning med 3 kanter) 0 = l(γ) 0 int(γ) κ g ds = n i=1 α i (3 2)π 1dA int(γ) 1dA = π 2 + π + α π Arean av triangeln = α. 2
34 18 Kapitel 2. Differentialgeometri
35 Kapitel 3 Algoritmer 3.1 Bézierytor Bézierytor och Bézierkurvor används mycket inom datorgrafik och inom design (med hjälp av datorer). Det är mycket populärt tack vare att det är enkelt att använda, även om man inte har så stor matematisk kunskap, och dessa ytor/kurvor har trevliga egenskaper som gör de lätta att arbeta med. Dock krävs det en dator för att göra beräkningar på kurvor/ytor av högre ordningen effektivt, även om det inte är svåra beräkningar. Då Bézierytor är ett sätt att bygga ytor från en samling punkter så lämpar sig dem väl för tillämpningsområden. Bézierkurvor och ytor härstammar från bilindustrin runt 60-talet. Det var två fransmän, Pierre Bézier och Paul de Casteljau som kom på och utvecklade metoden (de jobbade på Renault resp. Citröen). Jag börjar med att ta upp uppbyggnad och egenskaper av Bézierkurvor för att sedan gå över till Bézierytor. Anledningen till detta är att en Bézieryta är uppbyggd av produkten av två Bézierkurvor [5]. Bézierkurvor är polynomkurvor där formen av kurvan bestäms av en mängd kontrollpunkter, och graden av kurvan är n, där n +1 = # kontrollpunkter Bézierkurvor En Bézierkurva definieras av: Definition 12. Givet de n+1 kontrollpunkterna b 0, b 1,..., b n så ges Bézierkurvan av grad n av: B(t) = n b i B i,n (t), 0 t 1. i=0 Där varje punkt b i R k, och Bernsteinpolynomen B i,n (t) ges av B i,n (t) = { n! (n i)!i! (1 t)n i t i, om 0 i n 0, annars [5]. Denna form av Bézierkurvor kallas för heltals Bézierkurvor, det finns även en definition på rationella Bézierkurvor, men då jag använt mig av heltals Bé- Karlsson,
36 20 Kapitel 3. Algoritmer zierkurvor så kommer jag inte ta upp något om rationella kurvor. För den som vill läsa mer om dessa så hänvisar jag till [5]. Punkterna b i ger upphov till en (Bézier) kontroll-figur, givet att man tar punkterna och drar linjer mellan dessa i den ordning de ges (dvs från 0 n). Vi visar ett exempel på hur man tar fram en Bézierkurva, givet ett visst antal kontrollpunkter: Exempel Givet kontrollpunkterna b 0 = (0, 0), b 1 = (1, 1) och b 2 = (2, 0) så ska vi beräkna Bézierkurvan för dessa. Först noterar vi att b 0 inte tillför något, ty punkten är origo och därmed behöver vi inte beräkna B 0,2 (t) (notera att vi har 3 kontrollpunkter och därmed n = 2, alt kolla indexet på sista punkten). Så vi räknar ut Bernsteinpolynomen för i = 1 och 2: B 1,2 (t) = B 2,2 (t) = Nu kan vi räkna ut Bézierkurvan: 2! (2 1)!1! (1 t)2 1 t 1 B 1,2 (t) = 2t 2t 2. 2! (2 2)!2! (1 t)2 2 t 2 B 2,2 (t) = t 2. B(t) = b 0 B 0,2 (t) + b 1 B 1,2 (t) + b 2 B 2,2 (t) = (0, 0) + (1, 1)(2t 2t 2 ) + (2, 0)t 2 B(t) = (2t, 2t 2t 2 ). Vi ser i följande figur hur grafen för B(t) ser ut: Figur 3.1: Grafen över B(t) och kontrollfiguren.
37 3.1. Bézierytor 21 Bernsteinpolynomen i en Bézierkurva har viktiga egenskaper som påverkar Bézierkurvans egenskaper: 1. Summan av Bernsteinpolynomen: n B i,n (t) = 1, t [0, 1] i=0 2. Positivitet: B i,n (t) 0, t [0, 1] 3. Symmetri: B n i,n (t) = B i,n (1 t), för i = 0, 1,..., n 4. Rekursivitet: B i,n (t) = (1 t)b i,n 1 + tb i 1,n 1 (t), för i = 0, 1,..., n där B 1,n 1 (t) = 0 och B n,n 1 (t) = 0. De två första egenskaperna ger upphov till Bézierkurvans invarians vid affina avbildningar och egenskapen av det konvexa höljet. Symmetrin innebär att en symmetrisk kontroll-figur kommer ge upphov till en symmetrisk Bézierkurva och den sista egenskapen ger Casteljau s algoritm. Casteljau s algoritm är bra för att dela upp kurvan i nya Bézierkurvor av högre grad, dvs att det går att dela upp en befintlig kurva i t ex två delar och dessa delar representeras av två egna Bézierkurvor. Vi klargör dessa egenskaper och sammanfattar i en sats: Sats 4. En Bézierkurva B(t) av grad n med kontrollpunkterna b 0,..., b n uppfyller följande egenskaper: 1. Ändpunkts-interpolation: B(0) = b 0 och B(1) = b n 2. Egenskapen hos ändpunkts-tangenterna: B (0) = n(b 1 b 0 ) och B (1) = n(b n b n 1 ) 3. Egenskapen hos konvexa höljet: varje punkt på B(t) ligger inuti det konvexa höljet givet av kontrollpunkterna. 4. Invarians under affina avbildningar: Låt T vara en affin avbildning (rotation, spegling, translation eller skalning), då gäller: ( n ) T b i B i,n (t) = i=0 n T (b i )B i,n (t) [5] För bevis av dessa egenskaper så hänvisar jag till [5]. Vi kontrollerar egenskaperna för vår Bézierkurva i det senaste exemplet. i=0
38 22 Kapitel 3. Algoritmer Exempel Givet är Bézierkurvan B(t) = (2t, 2t 2t 2 ) Med kontrollpunkterna b 0 = (0, 0), b 1 = (1, 1) och b 2 = (2, 0). 1. B(0) = (0, 0) = b 0, B(1) = (2, 0) = b 2. Så egenskapen om ändpunktsinterpolation håller. 2. B (t) = (2, 2 4t) B (0) = (2, 2) = 2(b 1 b 0 ), B (1) = (2, 2) = 2(b 2 b 1 ) 3. det konvexa höljet av kontrollpunkterna kan vi se i grafen, och vi ser även att Bézierkurvan håller sig innanför den. ( ) ( ) Låt T =. Då blir T(B(t)) = (2t, 2t 2t ) = (4t, 4t 4t ). (1, 1) ( ) ( ) 2 0 (2t 2t ) + (2, 0) t 2 = (4t, 4t 4t 2 ) Alltså uppfyller vårat förra exempel alla dessa egenskaper, vilket inte är någon överraskning. För att beräkna tangenter, normaler och krökningar så är det nödvändigt att kunna beräkna derivatan av en Bézierkurva (som vi sedan kommer tillämpa på Bézierytor). Tack vare egenskapen om rekursivitet så går det att få en enkel och bra formel för derivatan för Bézierkurvor. Vi fokuserar på godtyckligt antal deriveringar, då vi behöver kunna derivera två gånger för att beräkna krökningar av ytor och för att det är snyggare att ha en formel för det allmänna fallet. Sats 5. Den r:te derivatan av en Bézierkurva av grad n ges av: där n r B (r) (t) = b (r) i B i,n r (t) i=0 b (r) i = n(n 1)... (n r + 1) r ( ) r ( 1) r j b i+j [5] j j=0 Beviset för denna satsen bygger på derivatan av Bernsteinpolynomen. Bevis för en derivata återfinns i [5] tillsammans med en sats om Bernsteinpolynomens derivator. Vi illustrerar satsen genom att ta våran Bézierkurva från föregående exempel. Exempel Vi önskar att derivera den Bézierkurvan som ges av följande kontrollpunkter: b 0 = (0, 0), b 1 = (1, 1) och b 2 = (2, 0). Enligt satsen så blir första derivatan
39 3.1. Bézierytor 23 B (1) (t) = Vi beräknar först b (1) i, i = 0, 1 : 1 i=0 b (1) i B i,1 (t) b (1) 0 = 2 ((1, 1) (0, 0)) = (2, 2). b (1) 1 = 2 ((2, 0) (1, 1)) = (2, 2) Bernsteinpolynomen blir B 0,1 (t) = (1 t), B 1,1 (t) = t, och vi får då derivatan: B (t) = (2, 2) (1 t) + (2, 2) t = (2, 2 4t) Vi vet sedan tidigare hur Bézierkurvan ser ut på sin parameterform, B(t) = (2t, 2t 2t 2 ) och vi kan därmed se att vi fått fram rätt derivata. Som läsaren troligen märkt så krävs det rätt mycket beräkningar för att få fram en derivering av en sådan enkel kurva. Däremot är det relativt enkelt att programmera in dessa standardformler och då är det inget bekymmer att ta fram detta. Vi har nu den kunskap som behövs för att kunna hantera Bézierytor och beräkna tangenter, normaler och krökningar av dessa ytor. Jag vill även uppmärksamma att det finns rationella Bézierkurvor som lämpar sig bättre för t ex ellipser och dessa har en lite annorlunda uppbyggnad gentemot heltals Bézierkurvor. För den som vill läsa mer om dessa så hänvisar jag till [5]. Eftersom detta arbete fokuserar på att jämföra beräkning av krökningen på sfären mellan Bézierytor och en diskret formel, så behövde jag inte använda mig av rationella Bézierkurvor/ytor Bézierytor Definition 13. En Bézieryta med kontrollpunkterna b i,j (0 i n, 0 j p) ges av: S(s, t) = n i=0 j=0 p b i,j B i,n (s)b j,p (t), (s, t) [0, 1] [0, 1] där B i,n (s) och B j,p (t) är Bernsteinpolynomen av grad n och grad p [5]. Alltså består en Bézieryta av den kartesiska produkten av två Bézierkurvor, vilket kommer medföra att vi har trevliga egenskaper för ytan. Vi kan även få fram parameterkurvor som utgör kanterna på ytan genom att fixera ena variabeln: S(0, t), S(1, t), S(s, 0), och S(s, 1). Följande egenskaper gäller för en Bézieryta: Sats Ändpunkts-Interpolation: S(0, 0) = b 0,0, S(1, 0) = b n,0, S(0, 1) = b 0,p, S(1, 1) = b n,p. 2. Konvexa höljet: Bézierytan S(s,t) ligger inuti det konvexa höljet som är givet av sina kontrollpunkter.
40 24 Kapitel 3. Algoritmer 3. Invarians under affina avbildningar Låt T vara en affin avbildning i 3 dimensioner, då gäller: ( n p ) n p T b i,j B i,n (s)b j,p (t) = T (b i,j )B i,n (s)b j,p (t) [5]. i=0 j=0 i=0 j=0 Att derivera en Bézieryta blir lite krångligare än för bara en kurva, i alla fall om man ska använda den allmänna formeln. För fallet med en partiell derivata så kan man se den inre summan som en enskild Bézierkurva och då gäller samma formel som för Bézierkurvor. Den allmänna formeln må vara jobbigare, men det är skönare att kunna ha den ifall man skulle vilja ha högre ordningens derivator. Sats 7. där b (α,β) i,j = S (α,β) (s, t) = n! p! (n α)! (p β)! n α p β i=0 j=0 α k=0 l=0 b (α,β) i,j B i,n α (s)b j,p β (t) β ( α ( 1) k ( 1) l k )( ) β b i+α k,j+β l [5]. l Här är α ordningen av derivatan med avseende på variabeln s och β är ordningen av derivatan med avseende på variabeln t. Att derivera en Bézieryta för hand är jobbigt, men man bör som sagt implementera formlerna i ett program som gör det åt en. För den som vill veta mer om Bézierytor, och liknande ytor/kurvor, så står det mer i [5]. Vi avslutar kapitlet om ytor med ett exempel på hur man konstruerar en Bézieryta och beräknar partiella derivator. Exempel Vi ska beräkna Bézierytan som ges av kontrollpunkterna b 0,0 = (1, 0, 0), b 1,0 = (0, 1, 1), b 0,1 = (1, 1, 1) och b 1,1 = (0, 0, 0). och beräkna S 1,1 (s, t). Bernsteinpolynomen vi behöver är: Vi sätter in värdena i algoritmen: B 0,1 (s) = 1 s, B 1,1 (s) = s. S(s, t) = b 0,0 B 0,1 (s)b 0,1 (t) + b 0,1 B 0,1 (s)b 1,1 (t) + b 1,0 B 1,1 (s)b 0,1 (t) + b 1,1 B 1,1 (s)b 1,1 (t) = (1, 0, 0)(1 s)(1 t) + (1, 1, 1)(1 s)t + (0, 1, 1)s(1 t) + (0, 0, 0)st = (1 s, t 2ts + s, s t) Nu återstår det att räkna ut derivatan S st(s, t) = b 1,1 i,j B i,1 1(s)B j,1 1 (t) i=0 j=0 = b (1,1) 0,0 B 0,0(s)B 0,0 (t) = (0, 2, 0),
41 3.2. Triangulering av ytor i R 3 25 eftersom b (1,1) 0,0 = 1 k=0 1 l=0 ( 1)k+l b 1 k,1 l = b 1,1 b 0,1 b 1,0 + b 0,0. En figur som visar hur Bézierytan ser ut: Figur 3.2: Grafen av B(t). 3.2 Triangulering av ytor i R 3 Att triangulera en yta innebär att man ska skapa trianglar som i sin tur kommer ge en bild av ytan. Detta görs genom att dra kanterna till de närliggande punkterna på ett sådant sätt att hela ytan täcks av trianglar. Att göra detta för hand är inget större problem, men med en dator så blir det ganska svårt att sätta upp krav som genererar en bra triangulering. Ännu jobbigare blir det om vi har en stor mängd punkter, ty då kan en dåligt vald algoritm ta väldigt lång tid för att generera en triangulering. Om ytan är i 3 dimensioner uppstår det ännu fler problem och flera krav finns för att få en triangulerad yta. Det finns olika algoritmer för detta och man måste veta ifall störningar existerar och vad för sorts störningar som kan uppkomma, detta gör att de flesta algoritmerna är ganska långa och svåra att implementera. I detta avsnitt kommer jag beskriva den algoritm som jag använt mig av för att lyckas triangulera en yta. Vi vet alltså inte hur ytan ser ut och ska lyckas skapa en bra approximation av den då vi enbart har en mängd punkter i R 3. Det viktigaste för oss är att lyckas få en triangulering så vi kan tillämpa algoritmen i avsnitt 2.3, dock så har jag även gjort en visualisering av ytan. Exempel på en annan triangulering finns i [4]. Vi kommer börja med att gå igenom Delaunay triangulering i R 2 som utgör grunden i min algoritm, för att sedan beskriva algoritmen. Jag avslutar med att
42 26 Kapitel 3. Algoritmer ge fördelar, nackdelar och förklara varför jag använt mig av denna algoritm Delaunay triangulering Delaunay trianguleringen kommer från den ryske matematikern Boris Delone och har en del trevliga egenskaper, speciellt finns det en egenskap som avgör om en triangel är en godkänd triangel i en Delaunay triangulering. Dock börjar vi med följande sats som är nödvändig för att få en bra triangulering: Sats 8. Delaunay trianguleringen av en mängd punkter i R 2 är alltid en planär graf. [1] En planär graf är en graf där inga kanter skär varandra, bevis finns i [1]. Nästa sats kommer i sin tur att ge upphov till det nödvändiga och tillräckliga kravet för en Delaunay triangulering. Sats 9. Låt P vara en mängd punkter i planet, då gäller: 1. Tre punkter p i, p j och p k P är hörnen i en triangel om cirkeln som går genom punkterna inte omsluter några andra punkter i P. 2. Två punkter p i, p k P bildar en kant till Delaunay grafen om det existerar en sluten cirkel som går genom punkterna, så att cirkeln inte omsluter några andra punkter i P. [1] Detta leder i sin tur till följande nödvändiga och tillräckliga krav när en triangulering är en Delaunay triangulering. Sats 10. Låt P vara en mängd punkter i planet och låt T vara en triangulering av P i planet. Då är T en Delaunay triangulering om och endast om det för varje triangel gäller att dess omskrivna cirkel inte omsluter någon punkt p P. [1] Det finns en annan egenskap som gör Delaunay trianguleringen ett bra alternativ, den maximerar alla minimumvinklar i trianglarna. Alltså undviker man att få långa smala trianglar. Vill läsaren få mer bevis och algoritmer så finns det i [1]. Det finns en motsvarighet till en mängd punkter i 3 dimensioner, men då får man istället använda sig av tetraedrer och slutresultatet blir då en kropp. Detta är inte vad vi är ute efter och därmed kan vi inte använda den algoritmen Triangulerings-algoritmen I artikelns algoritm ([2]) så kräver de ingen speciell triangulering, utan det räcker med en godtycklig triangulering. Vidare så vet vi på förhand vad för sorts ytor vi kommer jämföra Bézierytornas resp. artikelns algoritm ([2]) för approximering av krökningen, eftersom vi vill kunna jämföra med den analytiskt framtagna krökningen. Vi kommer inte heller ha något speciellt brus/störning på punkterna, förutom möjligen icke unika punkter (dvs samma punkt kan förekomma mer än en gång i punktmängden). Detta ger oss ett scenario där vi har kontroll på ytan och punktmängden, vi kan därmed skapa en relativt enkel algoritm för trianguleringen.
43 3.2. Triangulering av ytor i R 3 27 Grundidén är att på något sätt göra om punktmängden P R 3 till en punktmängd i R 2 istället. Detta för att vi vill kunna använda Delaunay trianguleringen, då den algoritmen är relativt enkel att implementera och speciellt då den algoritmen redan finns i Matlab. Givet en punktmängd P i R 3 så ser algoritmen ut som följande: Algoritm. triangulering(p) In: P= N 3 matris där varje rad motsvarar en punkt i R 3 Ut: T, där T är ett objekt innehållande en matris med alla trianglar och en matris med alla punkter (i planet). En graf som visualiserar den trianguliserade ytan. 1. Projicera ner alla punkter i xy-planet. 2. Kör DelaunayTri på de projicerade punkterna. 3. Gör en graf på: (a) Alla punkterna i P (b) Alla trianglar mellan punkterna i P Som läsaren ser så är algoritmen väldigt enkel, detta eftersom DelaunayTri i Matlab gör huvudjobbet i algoritmen. Den som vill se min kod i Matlab hänvisas till appendix. Figur 3.3: Resultatet av min trianguleringsalgoritm på halvsfären
44 28 Kapitel 3. Algoritmer Kommentarer Anledningen till varför jag använt denna algoritm är för att den var enkel att implementera och den skapar en triangulering av ytan snabbt. DelaunayTri i Matlab är egentligen en del av programmet qhull, som är specificierat till att beräkna konvexa höljen, voronoi diagram, Delaunay triangulering etc. Detta gör att jag troligtvis inte kan göra en egen kod (speciellt inte i Matlab) som är snabbare eller lika stabil som qhull. Ett annat problem som dyker upp med denna algoritm är att vi måste kräva av punktmängden (och ytan) att inga punkter har samma x,y koordinater medans de har olika z koordinater. Ty annars projiceras punkterna ner på samma punkt i xy-planet och skapar stora problem med trianguleringen. Detta medför att vi inte kommer kunna använda algoritmen på slutna ytor, utan vi måste alltid ta en karta av ytan som lämpar sig för detta. Dock har vi inga problem med att använda trianguleringen för att få ut en relativt bra triangulering av våran karta i exempel 1.1.3, som är den delen av enhetssfären vi approximerat krökningen på. 3.3 Artikeln Discrete Differential-Geometry Operators for Triangulated 2-Manifolds I detta avsnitt ska vi studera artikeln Discrete Differential-Geometry Operators for Triangulated 2-Manifolds av Mathieu Desbrun, Mark Meyer, Peter Schröder och Alan H. Barr [2]. Vi börjar med att definiera diskreta geometriska egenskaper sedan går vi igenom den bakomliggande teorin för deras approximation av gausskrökningen. Vi avslutar med att skriva ut algoritmen, som är relativt kort och enkel Diskretisering av geometriska egenskaper Det första som behövs göras är att på något sätt definiera den teori, som vi hittills gått igenom, på diskreta ytor. Här består en diskret yta av en approximering av en snäll yta, i form av en triangulering. Eftersom vi då har en linjär approximation kommer inte teorin att fungera, ty vi kan inte få fram någon normal eller tangent till ytan för att beräkna krökningar, utan vi behöver göra om den för C 0 -ytor. I artikeln väljer de att definiera de geometriska egenskaperna som ett genomsnitt av arean runt varje punkt. Väljs detta område runt punkten på samma sätt så kommer dessa egenskaper att konvergera mot det punktvisa värdet ifall trianguleringen runt punkten blir bättre (dvs om vi får fler punkter runt detta område). Genom att göra på detta sätt så kan man definiera krökningar och normaler på diskreta ytor. De väljer att ha detta genomsnitt av arean inom punktens närmaste trianglar, dessa trianglar brukar kallas för 1-rings områden. Detta gör de då de inte antar något om hur snäll ytan är. Med denna definition så blir den diskreta gausskrökningen ˆκ G, runt en punkt P som har den analytiska gausskrökningen κ G ˆκ G = 1 A A κ G da,
45 3.3. Artikeln Discrete Differential-Geometry Operators for Triangulated 2-Manifolds 29 för en väl given area A av ett 1-sammanhängande område som väljs runt punkten P. Med denna definition kommer den diskreta gausskrökningen gå mot den punktvisa analytiska gausskrökningen om A Approximation av gausskrökning I artikeln använder de Gauss-Bonnets sats (för kroklinjiga månghörningar) för att härleda en approximation av gausskrökningen. Deras utgångspunkt är på sidan 17 som ser ut som följande: l(γ) 0 κ g ds = 2π n i=1 β i κ G da σ, (3.1) int(γ) där β i är de yttre vinklarna, κ g geodetiska krökningen av kanter i månghörningen, κ G gausskrökningen och γ är en månghörning inuti 1-rings området. Här stöter vi på problem dock: 1. Vilken månghörning γ (int(γ) A) ska vi välja som ligger inom 1-rings området? 2. Vad blir den geodetiska krökningen och integralen av den? Vi vill att området ska ligga inom 1-rings området och kunna fungera runt alla punkter, vidare så bör detta områdes area, A, gå att beräkna relativt enkelt så att vi kan approximera genomsnittskrökningen bra. Voronoi- och masscentrumsceller I artikeln [2] används främst två olika områden, som också kallas för finita volymsområden. Författarna väljer att använda voronoi-områden (voronoi-celler) då det går att visa att dessa approximerar medelkrökningen bra (sid 8 i [2]). Den andra typen av områden som vanligen används är masscentrums-celler ( Barycenter cells ). Dessa områden beror på enskilda punkter, voronoi-området beror på den omskrivna cirkelns centrum. Definition 14. Voronoi-området för en triangel är det område som begränsas av mittpunktsnormalerna till kanterna på triangeln som har P som hörn. [2]
46 30 Kapitel 3. Algoritmer Figur 3.4: Voronoiområdet för triangeln, observera skalningen på axlarna. Den omskrivna cirkeln är den cirkel som går genom de tre hörnen i triangeln. Då vi behöver arean för att kunna approximera gausskrökningen så behöver vi kunna beräkna arean för voronoi-områden smidigt. Sats 11. Arean för ett voronoi-område runt en punkt x i, med närliggande punkter x j ges av: A V oronoi = 1 8 j N 1(i) (cot α ij + cot β ij ) x i x j 2 där α ij och β ij är de motstående hörnen för kanten (x i, x j ) och N 1 (i) är numreringen av alla punkter i 1-rings området till x i [2].
47 3.3. Artikeln Discrete Differential-Geometry Operators for Triangulated 2-Manifolds 31 Figur 3.5: kanten (x i, x j ) är den tjockare linjen med de motstående vinklarna β ij och α ij. Bevis för voronoi-områdets area återfinns i [2]. Det finns dock ett problem med att använda voronoi-området, om en triangel är trubbig i någon av vinklarna så kommer den omskrivna cirkelns mittpunkt att ligga utanför triangeln och därmed skapa problem med formeln för beräkning av arean. Därför används ett annat område för trubbiga trianglar, man tar mittpunkten på den motstående kanten till den trubbiga vinkeln och drar de räta linjerna till den punkten. Det går då att visa att områdets area blir A triangel /2 eller A triangel /4 beroende på om den trubbiga vinkeln är vid punkten/hörnet x i eller inte. Dessa områdens area tillsammans beräknas enligt följande algoritm: Algoritm. In: En punkt x i med sitt 1-rings område. Ut: A mixed = arean för alla områdena i trianglarna. För alla trianglar T i 1-ringsområdet: Om T inte är trubbig: A mixed = A mixed + A voronoi cellen Om T är trubbig vid x i : A mixed = A mixed + A triangel /2 annars: A mixed = A mixed + A triangel /4 Det blir problem när vi tvingas använda det andra området istället för voronoi-områdena, då blir nämligen felgränserna större (dvs för vinklar större än π/2) och approximationen av krökningen kommer därför bli sämre när det finns trubbiga trianglar. Eftersom alla trianglarnas områden håller sig inom sin triangel så är dessa områden icke överlappande, vidare så får vi en månghörning eftersom alla linjer går från mittpunkten på kanterna och slutar i samma punkt. Då alla linjerna mellan punkterna är räta i månghörningen så får vi från avsnitt att den
48 32 Kapitel 3. Algoritmer geodetiska krökningen κ g är noll eftersom räta linjer kan parametriseras till geodeser. Vi får därför ekvation 3.1 till: n 0 = 2π β i κ G da σ i=1 int(γ) n κ G da σ = 2π β i A mixed Vidare så har de yttre vinklarna, β i, för ett voronoi-område samma vinkel som den vinkeln vid punkten x i (i den triangeln) och det går även att visa att desamma gäller för det andra området. Vi kallar vinkeln vid punkten x i för θ i och vi får då: i=1 #f κ G da σ = 2π θ i (3.2) A mixed där #f är antalet trianglar i 1-rings området [2]. Använder vi nu definitionen för den diskreta gaussiska krökningen ˆκ G i formel 2.2 får vi: i=1 #f ˆκ G (x i ) = (2π θ i )/A Mixed [2]. (3.3) i=1 Därmed har vi ett sätt att approximera den gaussiska krökningen i en punkt, givet att vi även har en triangulering av ett område runt punkten. Denna operator kommer även att konvergera mot den punktvisa gaussiska krökningen för vare att de använder voronoi-områden. Dvs den approximerade krökningen blir bättre ju mer vi förfinar trianguleringen av ytan. Artikeln behandlar även medelkrökningen och härleder en formel för approximering utav den, dock så finns det inget bevis för att den konvergerar om man förbättrar trianguleringen av ytan. Vidare så går det att få fram principalkrökningarna genom att enbart veta medelkrökningen och gausskrökningen tack vare en sats som återfinns i [7] i kapitlet om gausskrökning. Den diskreta medelkrökningen kan approximeras med följande formel: κ n = A Mixed j N 1(i) Artikelns resultat (cot α ij + cot β ij )(x i x j ) [2] (3.4) Vi avslutar med att presentera artikelns resultat av deras approximationer [2]. %error κ H κ G Sphere patch 0,16 1,2 Paraboloid 0,0038 0,02 Torus (irregular) 0,036 0,05 Tabell 3.1: Artikelns resultat
49 3.3. Artikeln Discrete Differential-Geometry Operators for Triangulated 2-Manifolds 33 Siffrorna i tabellen är alltså givna som medelfelet i %. Dom beskriver inte med vilken algoritm dom triangulerat ytan utan anger att dom skapat ytorna med 258 punkter, för att sedan skapa nya ytor genom att interpolera punkterna och projicera om ytorna. Detta gjorde att de testade ytorna i fyra fall med olika antal punkter; 258, 1026, 4098 och Författarna anger att de testade andra ytor och medefelen på dessa ytor övergick aldrig 1.8% för gausskrökningen och 0.07% för medelkrökningen, för alla fyra fallen. De testade även att approximera (delar av) ytor som var oregelbundna, som t ex två områden som överlappar varandra med olika stickprovsmängder. Även i dessa fall så var deras approximationer bra med medelfel mindre än 0.2% resp. 1.8% för medel- och gausskrökningen. De skriver att deras approximationer blir sämre om ytorna blir mer oregelbundna, men att ökningen av felen är små.
50 34 Kapitel 3. Algoritmer
51 Kapitel 4 Resultat I detta avsnitt kommer jag att presentera resultaten av mina approximationer av gausskrökningen på Bézierytor och approximationer med artikelns algoritm [2]. Jag börjar med att presentera alla resultat för Bézierytor först, sedan resultaten för artikelns algortim för att avsluta med att jämföra de båda metodernas resultat. Jag har valt att approximera krökningarna på punktmängder med 49, 256, 1024 och punkter på enhetssfären i den positiva oktanten. Dessa punkter har valts efter meridianerna på sfären. Jag har testat på en mängd punkter som ligger inom samma område på ytorna för att kunna få en bra jämförelse, detta leder såklart till att jag fått approximera på flera punkter om punktmängden varit större. Jag använder medelvärden för att kunna jämföra mellan approximationerna och för att hålla nere storleken på tabellerna. Jag har även klockat approximeringarna för att kunna jämföra hur snabba de två metoderna är. För att förtydliga hur jag valt ut punkterna kommer det finnas bilder på ytorna med punkterna visualiserade i form av vita prickar och det är alltså dessa vi approximerat krökningarna vid. Andra trianguleringar finns i [4] och [8]. Karlsson,
52 36 Kapitel 4. Resultat 4.1 Resultat för Bézierytor För alla simuleringar har jag valt att använda punkten (1,0,0) som den första punkten och nordpolen som den sista punkten (vid konstruktionen av ytan), detta kan spela roll för hur ytan ser ut och beter sig. Tabell 4.1: Bézieryta av 49 punkter, 7 approximationer värde f el Gausskrökning 0, ,78% Medelkrökning 0, ,15% Figur 4.1: Bézieryta av 49 punkter
53 4.1. Resultat för Bézierytor 37 Tabell 4.2: Bézieryta av 256 punkter, 16 approximationer värde f el Gausskrökning 0,9702 9,44% Medelkrökning 0,9849 4,83% Figur 4.2: Bézieryta av 256 punkter
54 38 Kapitel 4. Resultat Tabell 4.3: Bézieryta av 1024 punkter, 32 approximationer värde f el Gausskrökning 0,9851 3,58% Medelkrökning 0,9925 1,81% Figur 4.3: Bézieryta av 1024 punkter Tabell 4.4: Bézieryta av punkter, 128 approximationer värde f el Gausskrökning 0,9963 0,85% Medelkrökning 0,9981 0,43% Som vi ser i tabellerna så konvergerar krökningarna mot det analytiska värdet. Det största felvärdet fås genom att gå närmare nordpolen, detta beror på att närmare nordpolen blir ytan mer linjär. Däremot är det inga problem på kanterna till ytan.
55 4.2. Resultat för Discrete Diffierential-Geometry Operators for Triangulated 2-Manifolds algoritm Resultat för Discrete Diffierential-Geometry Operators for Triangulated 2-Manifolds algoritm Här har jag använt trianguleringsalgoritmen som beskrivs i avsnitt 2.2 på samma del av enhetssfären som för Bézierytor. Jag har tagit samma remsa av punkter som innan, för att kunna jämföra metoderna. Jag har även valt att testa approximationen på hela sfären, men då har jag triangulerat med hjälp av konvexa höljet (convhulln i Matlab). Detta för att få en bättre bild av trianguleringens påverkan på resultatet. Tabell 4.5: Triangulering av 49 punkter, 5 approximationer värde f el Gausskrökning 1,0608 9,72% Medelkrökning 1,0474 9,43% Figur 4.4: Triangulering av 49 punkter
56 40 Kapitel 4. Resultat Tabell 4.6: Triangulering av 256 punkter, 13 approximationer värde f el Gausskrökning 1,0480 6,71% Medelkrökning 1,0458 6,64% Figur 4.5: Triangulering av 256 punkter Tabell 4.7: Triangulering av 1024 punkter, 29 approximationer värde f el Gausskrökning 1, ,32% Medelkrökning 1, ,31%
57 4.2. Resultat för Discrete Diffierential-Geometry Operators for Triangulated 2-Manifolds algoritm 41 Figur 4.6: Triangulering av 1024 punkter Tabell 4.8: Triangulering av punkter, 122 approximationer värde f el Gausskrökning 1, ,65% Medelkrökning 1, ,65% Vi ser att medelvärdet av gausskrökningen blir bättre fram till punkter, där värdet blir sämre. Även medelfelet blir bättre fram till 1024 punkter, där det blir sämre för att sedan förbättras något vid punkter. Medelkrökningen beter sig som gausskrökningen, förutom att den approximeras något bättre än gausskrökningen för varje fall utom då vi har punkter. Det går inte heller att approximera krökning på kanterna till ytan, detta då vi inte har ett fullständigt 1-rings område runt punkterna. Jag har även testat en annan triangulering som fås av det konvexa höljet, men då måste vi använda hela sfären. Anledningen till detta är för att se hur en annan triangulering påverkar resultatet.
58 42 Kapitel 4. Resultat Tabell 4.9: Konvexa höljet av 256 punkter, 11 approximationer värde f el Gausskrökning 1,0150 5,59% Medelkrökning 0,9847 4,93% Figur 4.7: Konvexa höljet av sfären med 256 punkter
59 4.2. Resultat för Discrete Diffierential-Geometry Operators for Triangulated 2-Manifolds algoritm 43 Tabell 4.10: Konvexa höljet av 1024 punkter, 27 approximationer värde f el Gausskrökning 1,0039 3,35% Medelkrökning 0,9997 3,32% Figur 4.8: Konvexa höljet av sfären med 1024 punkter Tabell 4.11: Konvexa höljet av punkter, 122 approximationer värde f el Gausskrökning 1,0150 4,75% Medelkrökning 1,0148 4,75% Även med denna triangulering så approximeras gausskrökningen bra även om den blir lite sämre med gentemot 1024 punkter och medelkrökningen beter sig likadant fast den är något bättre än gausskrökningen (förutom med 256 punkter). Däremot verkar den här trianguleringen fungera bättre med artikelns algoritm. Jag avslutar med att ge en tabell över de bästa approximationerna för respektive fall och vilken metod som gav den approximationen.
60 44 Kapitel 4. Resultat #Punkter Gausskrökning Algoritm 49 1,0608 Artikelns algoritm, triangulering 256 1,015 Artikelns algoritm, konvexa höljet ,0039 Artikelns algoritm, konvexa höljet ,9963 Bézieryta Tabell 4.12: Bästa approximationerna av gausskrökningen För medelkrökningen får vi följande tabell #Punkter M edelkrökning Algoritm 49 0,9647 Bézieryta 256 0,9849 Bézieryta ,9997 Artikelns algoritm, konvexa höljet ,9981 Bézieryta Tabell 4.13: Bästa approximationerna av medelkrökningen Vi avslutar med att ge en tabell för tidsåtgången för varje approximering, dvs hur lång tid det tog att approximera krökningarna i alla valda punkterna. Algoritmerna är testade på en dator med AMD A6-3410MX APU (1,6GHz 4 kärnor). Tiden är angiven i sekunder om inget annat skrivs. Metod #Punkter # Approximationer Tidsåtgång Bézier ,655 Artikeln, triangulering ,0259 Bézier ,99 Artikeln, triangulering ,123 Artikeln, konvexa höljet ,0784 Bézier ,7 Artikeln, triangulering ,701 Artikeln, konvexa höljet ,644 Bézier h 18min Artikeln, triangulering ,7 Artikeln, konvexa höljet ,0 Tabell 4.14: Tidsåtgång för algoritmerna
61 Kapitel 5 Slutsatser och diskussion Bézierytans approximation av krökningarna var bra, även om den inte var riktigt lika bra som artikelns approximation av gausskrökningen för de färre punkterna. Däremot ser vi att medel- och gausskrökningarna konvergerar mot det analytiska värdet och att spridningen på värdena minskar om antalet punkter höjs. En av det större nackdelarna var att beräkningarna för att få fram approximationerna tog väldigt lång tid då vi hade punkter (de 122 approximationerna tog ett par timmar att beräkna). Troligtvis går det att optimera koden så det går snabbare, bland annat genom att programmera i C eller C++ istället för Matlab. Anledningen till att jag valde Matlab var för dess inbyggda matematiska funktioner och för den smidiga visualiseringen. En annan nackdel är att Bézierytan blev linjär vid nordpolen vilket gjorde att vi inte kunde approximera krökningarna där, men jämför vi med artikelns algoritm som inte kan approximera på några kanter alls är Bézierytan bättre. Med artikelns algoritm approximerades gausskrökningen bra, den var i de flesta fallen bättre än Bézierytornas approximationer (om vi tar med båda sätten att triangulera). Artikelns approximation hade dock större spridningar än Bézierytans approximation, vilket gör valet av punkter viktigare. Även medelkrökningen approximerades bra med artikelns algoritm, den var något bättre än gausskrökningen i de flesta fallen. Däremot var Bézierytans approximation bättre i nästan alla fallen och spridningen på Bézierytans medelkrökningen var mindre, vilket gör den till ett bättre val för medelkrökningen. Som för gausskrökningen så är valet av punkter viktigare vid approximation av medelkrökningen med artikelns algoritm, vilket gör Bézierytan till den bättre metoden. Jag lyckades inte få samma resultat som artikeln fick med sin algoritm. Detta beror på att de flesta trianglarna i min triangulering är trubbiga och då blir man tvungen att använda sig av deras andra finita volymsområde, vilket de skriver ska ge sämre approximationer. Jag lyckades inte heller få gausskrökningen att konvergera, dock verkade den göra det fram till sista fallet med punkter. Även detta beror på att trianguleringen gav många trubbiga vinklar vilket ledde till att vi inte kunde använda voronoi-områden runt punkterna. Eftersom artikelns bevis för konvergens gäller just för voronoi-områden så kunde vi inte heller förvänta oss det. En annan nackdel med artikelns algoritm är att det inte går att approximera Karlsson,
62 46 Kapitel 5. Slutsatser och diskussion någon krökning längs med konturerna till ytan, vilket beror på att vi inte har något fullständigt 1-rings område runt de punkterna (dessa värden blir väldigt stora). Av de två trianguleringsmetoderna var den som fås genom kovexa höljet bättre, den gav bättre medelvärde på gausskrökningen och mindre spridning mellan värdena. Detta pekar ytterligare på att algoritmen är starkt beroende på val av triangulering. För att kunna rättfärdiga artikelns resultat så behövs ytterligare approximationer göras, då på en triangulerad yta med mindre antal trubbiga trianglar (helst inga). Det skulle även vara intressant att testa båda metoderna på ytor som har någon form av brus för att se hur approximationerna beter sig då. Även approximationer på andra ytor än just sfären skulle vara av intresse. En annan fortsättning skulle kunna vara att approximera diskret krökning av rotationsytor. En rotationsyta är en kurva som roteras runt en axel (eller en annan rät linje). Fördelen med rotationsytor är att det blir enklare att få fram trianguleringar och att beräkna krökningar. Av mina resultat så verkar Bézierytan vara den stabilare metoden för approximation av gauss- och medelkrökningen (speciellt medelkrökningen), den är även lättare att implementera. Däremot så kräver den fler operationer och blir tidsmässigt mer kostsam.
63 Litteraturförteckning [1] Mark de Berg, Otfried Cheong, Mark van Kreveld, and Mark Overmars. Computational Geometry: Algorithms and Applications. Springer Verlag, third edition, March [2] Mathieu Desbrun, Mark Meyer, Peter Schröder, and Alan H. Barr. Discrete Differential-Geometry Operators for Triangulated 2-Manifolds. Visualization and Mathematics III, pages 35 58, Springer-Verlag, [3] Elias Erdtman. Visualisering av krökning, Linköpings universitet LiTH- MAT-EX 2010/14 SE, juni [4] A. Hilton, J. Illingworth, A.J. Stoddart, and T. Windeatt. Curvature and torsion feature extraction from freeform 3-d meshes at multiple scales. IEEE Proc-Vis. Image Signal Process, Vol. 147 pp , [5] Duncan Marsh. Applied Geometry for Computer Graphics and CAD. SUMS. Springer-Verlag, second edition, [6] Arne Persson och Lars-Christer Böiers. Analys i Flera Variabler. Studentlitteratur, andra upplagan, [7] Andrew Pressley. Elementary Differential Geometry. SUMS. Springer Verlag, third edition, [8] B. Thibert and J.M. Morvan. On the approximation of a smooth surface with a triangulated mesh. Computational Geometry Theory And Application, Vol. 23 pp , Karlsson,
64 48 Litteraturförteckning
65 Bilaga A Matlabkoder A.1 beziercurvature 1 function [gaussian, meancurvature] = beziercurvature( cp, st ) 2 %CURVATURE Summary of this function goes here 3 % cp is a MxNx3 matrix with the controlnet. st is a 2x1 matrix... and it 4 % will be the point at which we will calculate the curvature. 5 iter = size(st,2); 6 % Plotting point 7 % hold on; 8 % currp = Beziersurface(cp, st); 9 % plot3(currp(1), currp(2), currp(3), '.w', 'Markersize',15); for i =1:iter sprim = diffbezier(cp,1,0,st(:,i)); 14 ssbiss = diffbezier(cp,2,0,st(:,i)); 15 tprim = diffbezier(cp,0,1,st(:,i)); 16 ttbiss = diffbezier(cp,0,2,st(:,i)); 17 stprim = diffbezier(cp,1,1,st(:,i)); E = dot(sprim, sprim); 20 F = dot(sprim, tprim); 21 G = dot(tprim, tprim); n = cross(tprim, sprim); 24 unitn = n./(norm(n)); L = dot(ssbiss,unitn); 27 M = dot(stprim, unitn); 28 N = dot(ttbiss, unitn); F1 = [E F; F G]; 31 F2 = [L M; M N]; 32 end 33 meancurvature = (L*G 2*M*F+N*E)/(2*E*G 2*F^2); 34 gaussian = (L*N M^2)/(E*G F^2); 35 end Karlsson,
66 50 Bilaga A. Matlabkoder A.2 Beziersurface 1 function [ value ] = Beziersurface(cp,st) 2 %BEZIERSURFACE Calculates the value in the point(s) B(s,t). 3 % cp is a MxNx3 matrix with all the controlpoints for the... surface. p[i,j] 4 % = cp(i+1, j+1, :). (so x coordinate of p(i,j) = cp(i+1, j+1, 1)) 5 % st is a matrix with dim 2xM, where each column contains... values for s 6 % and t. 7 degn = size(cp,1) 1; 8 degp = size(cp,2) 1; 9 times = size(st, 2); 10 value = zeros(times, 3); for k = 1:times 13 curvex = 0; 14 curvey = 0; 15 curvez = 0; 16 currs = st(1,k); 17 currt = st(2,k); for i = 0:degn Coeffn = nchoosek(degn,i); 22 bernn = Coeffn * (1 currs)^(degn i) * currs^i; for j = 0:degp Coeffp = nchoosek(degp,j); 27 bernp = Coeffp * (1 currt)^(degp j) * currt^j; curvex = curvex + cp(i+1, j+1, 1) * bernn * bernp; 30 curvey = curvey + cp(i+1, j+1, 2) * bernn * bernp; 31 curvez = curvez + cp(i+1, j+1, 3) * bernn * bernp; 32 end 33 end 34 value(k,:) =[curvex curvey curvez]; 35 end 36 end A.3 diffbezier 1 function [ value ] = diffbezier( cp,d1, d2, st) 2 %DIFFBEZIER Calculate the derivative of B(s,t) in the point(s) s,t. 3 % cp = controlpoints in a MxNx3 matrix, p(m,n) = cp(m+1, n+1, :) 4 % d1/d2 = differentiating d1/d2 times with respect to s/t. 5 % st = 2xM matrix, where row 1 corresp. to s values and row 2... to t values. 6 7 degn = size(cp,1) 1 d1; 8 degp = size(cp,2) 1 d2; 9 times = size(st, 2); 10 value = zeros(times, 3); for k = 1:times
67 A.3. diffbezier curvex = 0; 14 curvey = 0; 15 curvez = 0; 16 currs = st(1,k); 17 currt = st(2,k); for i = 0:degn Coeffn = nchoosek(degn,i); 22 bernn = Coeffn * (1 currs)^(degn i) * currs^i; for j = 0:degp Coeffp = nchoosek(degp,j); 27 bernp = Coeffp * (1 currt)^(degp j) * currt^j; p = pdiff(d1, d2, degn, degp, cp, i,j); curvex = curvex + p(1, 1) * bernn * bernp; 32 curvey = curvey + p(1, 2) * bernn * bernp; 33 curvez = curvez + p(1,3) * bernn * bernp; 34 end 35 end value(k,:) =[curvex curvey curvez]; end end function [pij] = pdiff(d1, d2, degn, degp, cp, i, j) 44 pijx = 0; 45 pijy = 0; 46 pijz = 0; factn = factorial(degn + d1)/(factorial(degn)); 49 factp = factorial(degp + d2)/(factorial(degp)); for k = 0:d for l = 0:d2 54 sign = ( 1)^k * ( 1)^l; 55 kbin = nchoosek(d1, k); 56 lbin = nchoosek(d2, l); 57 coeffp = sign * kbin * lbin; 58 pijx = pijx + coeffp * cp(i + d1 k +1, j + d2 l + 1, 1); 59 pijy = pijy + coeffp * cp(i + d1 k +1, j + d2 l + 1, 2); 60 pijz = pijz + coeffp * cp(i + d1 k +1, j + d2 l + 1, 3); 61 end 62 end 63 pij = (factn*factp).*[pijx, pijy, pijz]; 64 end
68 52 Bilaga A. Matlabkoder A.4 discurv 1 function [ gausscurvature, meancurvature ] = discurv(pointm, point) 2 %DISCURV pointm = matrix with the pointcloud, Nx3 where N equals... #points. 3 % Point is the point you want to approximate curvatures at, must... be in the 4 % pointcloud (in pointm that is). 5 6 points = unique(pointm,'rows'); %we only need unique points 7 [dt] = triangulate(points); %dt.triangulation = all triangles. 8 9 %Uncomment these two if you want to plot the point we are 10 %approximating curvatures at %hold on; 13 %plot3(point(1), point(2), point(3), '.w','markersize',15) pointindex = isthere(points,point); trirows = size(dt.triangulation,1); 18 triindex = find(dt.triangulation == pointindex); 19 iters = size(triindex,1); 20 Amixed = 0; 21 anglesatx = []; 22 contour = 0; 23 checkedvertex = 0; 24 curv_operator_sum = [0 0 0]; % FOR SPHERE PATCH ONLY!!!!!!! % used only for sphere patch in positive octant, setting bool... variable to 1 28 % if we are at an edge. 29 for apa = 1:3 30 if point(apa) < contour = 1; 32 end 33 end 34 % %correcting the columnvector triindex so we get the whole... triangle (each 37 %row in dt.triangulation) index for dt.triangulation 38 for j=1:iters 39 if triindex(j,1) trirows elseif triindex(j,1) trirows*2 42 triindex(j,1) = triindex(j,1) trirows; elseif triindex(j,1) trirows*3 45 triindex(j,1) = triindex(j,1) 2*trirows; 46 end 47 end %creating a matrix with all triangles that our point is a vertex in 50 triangles = zeros(iters,3); 51 for a =1:iters 52 temp = triindex(a,1); 53 triangles(a,:) = dt.triangulation(temp,:);
69 A.4. discurv end for o = 1:iters 57 currtri1 = triangles(o,:); %creating a matrix with the remaining triangles in the 1 ring 60 %neighbourhood 61 remtriangles = triangles; 62 remtriangles(o,:) = []; 63 pos = find(currtri1 == pointindex); 64 currtri1(pos) = []; %creating the necessary vectors so we can calculate all angles 67 v1_1p = points(pointindex,:) points(currtri1(1),:); 68 v1_2p = points(pointindex,:) points(currtri1(2),:); 69 vectors = [(v1_1p); (v1_2p)]; v1_12 = points(currtri1(2),:) points(currtri1(1),:); 72 v1_21 = v1_12; %calculating angles with the dotproduct 75 cosinus_alphav1 = dot(v1_1p, v1_12)/(norm(v1_1p)*norm(v1_12)); 76 cosinus_alphav2 = dot(v1_2p, v1_21)/(norm(v1_2p)*norm(v1_21)); 77 cosinus_alpha = [cosinus_alphav2 cosinus_alphav1]; 78 angleatpoint = acos(dot( v1_1p..., v1_2p)/(norm(v1_1p)*norm(v1_2p))); %storing all angles at our given point in each triangle,... since we want 81 %to use it for gaussian curvature 82 anglesatx(o) = angleatpoint; for c = 1:2 85 %fixing the vertex which we will calculate the... voronoi area for 86 currvert = currtri1(c); 87 if findrow(checkedvertex, currvert) == 0 88 checkedvertex = [checkedvertex currvert]; 89 %search for the next triangle that shares the edge... between our point and the current point 90 rowindex = findrow(remtriangles, currvert); if rowindex 0 93 vert2 = remtriangles(rowindex,:); 94 vert2(find(vert2 == pointindex)) = []; 95 %the third point in the second triangle, the... other two are already known 96 vert2(find(vert2 == currvert)) = []; %creating edgevectors in this triangle 99 v2_vp = points(pointindex,:) points(vert2,:); 100 v2_currvv = points(currvert,:) points(vert2,:); %cos(angle) for the opposite vertex of our... current edge 103 betan = dot(v2_vp,... v2_currvv)/(norm(v2_vp)*norm(v2_currvv)); %calculating cot(aij), cot(bij) with the formula... cot(aij) = 106 %cos(aij)/(sqrt(1 cos(aij)^2)), this is better... then taking
70 54 Bilaga A. Matlabkoder 107 %acos on the dot/norm and then cot on that cottalpha =... cosinus_alpha(c)/(sqrt(1 cosinus_alpha(c)^2)); 110 cottbetan = betan/(sqrt(1 betan^2)); 111 cot_angles = cottalpha + cottbetan ; %component for mean curvature 114 curv_operator_sum = curv_operator_sum +... cot_angles.*vectors(c,:); 115 %setting our bool variables to be true (1) or... false (0) so we can 116 %calculate with voronoiarea or triangle area if acos(cosinus_alphav1) (pi/2 pi/16)... acos(cosinus_alphav2) (pi/2 pi/16) 119 voronoisafe = 0; 120 obtuseatpoint = 0; 121 elseif angleatpoint (pi/2 pi/16) 122 voronoisafe = 0; 123 obtuseatpoint = 1; 124 else 125 voronoisafe = 1; 126 obtuseatpoint = 0; 127 end 128 else 129 voronoisafe =0; 130 obtuseatpoint = 0; 131 end %Calculate the area for the voroniarea, alternative... for the 134 %triangle if it is obtuse 135 if voronoisafe == % 'vornoi' 137 Amixed = Amixed + 1/8 *cot_angles *... (norm(vectors(c,:))^2); 138 elseif obtuseatpoint == %'obtuseatpoint' 140 %area of triangle = 1/2*cross(vector of edge1,... vector of edge2) 141 Amixed = Amixed + 1/2*(1/2 * norm(cross( v1_1p,... v1_2p))); 142 else 143 % 'obtusetriangle' 144 %area of triangle = 1/2*cross(vector of edge1,... vector of edge2) 145 Amixed = Amixed + 1/4*(1/2 * norm(cross( v1_1p,... v1_2p))); 146 end end 149 end 150 end if contour == 'Incorrect approximation due to edge point!' 154 end gausscurvature = (2*pi sum(anglesatx))/amixed 157 % Calculating mean curvature 158 meancurvature = 0.5*norm(1/(2*Amixed).*curv_operator_sum)
71 A.4. discurv % Calculating principalcurvatures 161 % = meancurvature^2 gausscurvature; 162 % if > % principalcurvature1 = meancurvature + sqrt( ) 164 % principalcurvature2 = meancurvature sqrt( ) 165 % else 166 % principalcurvature1 = meancurvature 167 % principalcurvature2 = meancurvature 168 % end 169 end %finds the rowindex where the row is in the matrix 172 function [index] = isthere(matrix, row) 173 iter = size(matrix,1); for k = 1:iter 176 if isequal(row, matrix(k,:)) 177 index = k; 178 break 179 end 180 end end %finds the row where the element exist in the matrix 185 %assuming there only exist one unique element in matrix!!! 186 function [index] = findrow(matrix, element) 187 rows = size(matrix,1); 188 columns = size(matrix,2); 189 itera = rows; 190 iterb = columns; 191 index = 0; 192 for k = 1:itera 193 for q = 1:iterb 194 if matrix(k,q) == element 195 index = k; 196 end 197 end 198 end 199 end
72 56 Bilaga A. Matlabkoder A.5 discurv2 1 function [ gausscurvature, meancurvature ] = discurv2(pointm, point) 2 %DISCURV Uses convex hull as triangulation, pointm = pointcloud... of a 3 %surface and point = teh point you want to approximate the... curvatures at. 4 % 5 points = unique(pointm,'rows'); %we only need unique points 6 dt = convhulln(points); 7 %uncomment the rows below if you want to plot everything. 8 % hold on; 9 % plot3(point(1), point(2), point(3), '.w','markersize',15) 10 % trisurf(dt,points(:,1), points(:,2), points(:,3)); 11 % plot3(points(:,1), points(:,2), points(:,3), 'o'); 12 pointindex = isthere(points,point); trirows = size(dt,1); 15 triindex = find(dt == pointindex); 16 iters = size(triindex,1); 17 Amixed = 0; 18 anglesatx = []; 19 contour = 0; 20 checkedvertex = 0; 21 curv_operator_sum = [0 0 0]; % FOR SPHERE PATCH ONLY!!!!!!! % Setting bool variable depending on if the current point lies... on the edge. 25 % for apa = 1:3 26 % if point(apa) < % contour = 1; 28 % end 29 % end 30 % %correcting the columnvector triindex so we get the whole... triangle (each 33 %row in dt.triangulation) index for dt.triangulation 34 for j=1:iters 35 if triindex(j,1) trirows elseif triindex(j,1) trirows*2 38 triindex(j,1) = triindex(j,1) trirows; elseif triindex(j,1) trirows*3 41 triindex(j,1) = triindex(j,1) 2*trirows; 42 end 43 end %creating a matrix with all triangles that our point is a vertex in 46 triangles = zeros(iters,3); 47 for a =1:iters 48 temp = triindex(a,1); 49 triangles(a,:) = dt(temp,:); 50 end for o = 1:iters 53 currtri1 = triangles(o,:);
73 A.5. discurv %creating a matrix with the remaining triangles in the 1 ring 56 %neighbourhood 57 remtriangles = triangles; 58 remtriangles(o,:) = []; 59 pos = find(currtri1 == pointindex); 60 currtri1(pos) = []; %creating the necessary vectors so we can calculate all angles 63 v1_1p = points(pointindex,:) points(currtri1(1),:); 64 v1_2p = points(pointindex,:) points(currtri1(2),:); 65 vectors = [v1_1p; v1_2p]; v1_12 = points(currtri1(2),:) points(currtri1(1),:); 68 v1_21 = v1_12; %calculating angles with the dotproduct 71 cosinus_alphav1 = dot(v1_1p, v1_12)/(norm(v1_1p)*norm(v1_12)); 72 cosinus_alphav2 = dot(v1_2p, v1_21)/(norm(v1_2p)*norm(v1_21)); 73 cosinus_alpha = [cosinus_alphav2 cosinus_alphav1]; 74 angleatpoint = acos(dot( v1_1p..., v1_2p)/(norm(v1_1p)*norm(v1_2p))); %storing all angles at our given point in each triangle,... since we want 77 %to use it for gaussian curvature 78 anglesatx(o) = angleatpoint; for c = 1:2 81 %fixing the vertex which we will calculate the... voroni area for 82 currvert = currtri1(c); 83 if findrow(checkedvertex, currvert) == 0 84 checkedvertex = [checkedvertex currvert]; 85 %search for the next triangle that shares the edge... between our point and the current point 86 rowindex = findrow(remtriangles, currvert); if rowindex 0 89 vert2 = remtriangles(rowindex,:); 90 vert2(find(vert2 == pointindex)) = []; 91 %the third point in the second triangle, the... other two are already known 92 vert2(find(vert2 == currvert)) = []; %creating edgevectors in this triangle 95 v2_vp = points(pointindex,:) points(vert2,:); 96 v2_currvv = points(currvert,:) points(vert2,:); %cos(angle) for the opposite vertex of our... current edge 99 betan = dot(v2_vp,... v2_currvv)/(norm(v2_vp)*norm(v2_currvv)); %calculating cot(aij), cot(bij) with the formula... cot(aij) = 102 %cos(aij)/(sqrt(1 cos(aij)^2)), this is better... then taking 103 %acos on the dot/norm and then cot on that. 104 cottalpha =... cosinus_alpha(c)/(sqrt(1 cosinus_alpha(c)^2)); 105 cottbetan = betan/(sqrt(1 betan^2));
74 58 Bilaga A. Matlabkoder 106 cot_angles = cottalpha + cottbetan ; %component for mean curvature 109 curv_operator_sum = curv_operator_sum +... cot_angles.*( vectors(c,:)); %setting our bool variables to be true (1) or... false (0) so we can 112 %calculate with voronoiarea or triangle area 113 if acos(cosinus_alphav1) (pi/2 pi/16)... acos(cosinus_alphav2) (pi/2 pi/16) 114 voronoisafe = 0; 115 obtuseatpoint = 0; 116 elseif angleatpoint (pi/2 pi/16) 117 voronoisafe = 0; 118 obtuseatpoint = 1; 119 else 120 voronoisafe = 1; 121 obtuseatpoint = 0; 122 end 123 else 124 voronoisafe =0; 125 obtuseatpoint = 0; 126 end %Calculate the area for the voroniarea, alternative... for the 129 %triangle if it is obtuse 130 if voronoisafe == 'vornoi' 132 Amixed = Amixed + 1/8 *cot_angles *... (norm(vectors(c,:))^2); 133 elseif obtuseatpoint == 'obtuseatpoint' 135 %area of triangle = 1/2*cross(vector of edge1,... vector of edge2) 136 Amixed = Amixed + 1/2*(1/2 * norm(cross( v1_1p,... v1_2p))); 137 else 138 'obtusetriangle' 139 %area of triangle = 1/2*cross(vector of edge1,... vector of edge2) 140 Amixed = Amixed + 1/4*(1/2 * norm(cross( v1_1p,... v1_2p))); 141 end end 144 end 145 end if contour == 'Incorrect approximation due to edge point!' 149 end gausscurvature = (2*pi sum(anglesatx))/amixed; % Calculating mean curvature 154 meancurvature = 0.5*norm(1/(2*Amixed).*curv_operator_sum); % Calculating principalcurvatures 157 % = meancurvature^2 gausscurvature; 158 % if > 0
75 A.5. discurv % principalcurvature1 = meancurvature + sqrt( ) 160 % principalcurvature2 = meancurvature sqrt( ) 161 % else 162 % principalcurvature1 = meancurvature 163 % principalcurvature2 = meancurvature 164 % end 165 end %finds the rowindex where the row is in the matrix 168 function [index] = isthere(matrix, row) 169 iter = size(matrix,1); for k = 1:iter 172 if isequal(row, matrix(k,:)) 173 index = k; 174 break 175 end 176 end end %finds the row where the element exist in the matrix 181 %assuming there only exist one unique element in matrix!!! 182 function [index] = findrow(matrix, element) 183 rows = size(matrix,1); 184 columns = size(matrix,2); 185 itera = rows; 186 iterb = columns; 187 index = 0; 188 for k = 1:itera 189 for q = 1:iterb 190 if matrix(k,q) == element 191 index = k; 192 end 193 end 194 end 195 end
76 60 Bilaga A. Matlabkoder A.6 renderbsurface 1 function temp = renderbsurface(cp) 2 %RENDERSURFACE Making a plot over the Beziersurface. 3 % cp is a MxNx3 matrix, where p[i,j] = cp(i+1,j+1,:). 4 X = zeros(10,10,3); 5 x = 1; 6 y = 1; 7 8 for i= linspace(0,1,15) 9 for k= linspace(0,1,15) 10 X(x,y,:) = Beziersurface(cp,[i;k]); 11 y = y+1; 12 end 13 y = 1; 14 x = x+1; 15 end 16 surf(x(:,:,1), X(:,:,2), X(:,:,3)); 17 hold on; 18 mesh(cp(:,:,1), cp(:,:,2), cp(:,:,3),'marker','o','facealpha',0,... 'EdgeColor',[0 0 0]); end A.7 triangulate 1 function [dt] = triangulate( points ) 2 %TRIANGULATE Creates a triangulation of Nx3 pointcloud. 3 % points is a Mx3 matrix 4 npoints = size(points,1); 5 X = zeros(npoints,1); 6 Y = zeros(npoints,1); 7 Z = zeros(npoints,1); 8 k=1; 9 hold on 10 for j = 1:npoints 11 X(k) = points(j,1); 12 Y(k) = points(j,2); 13 Z(k) = points(j,3); 14 k=k+1; 15 end TRI = delaunay(x,y); 18 dt = DelaunayTri(X,Y); 19 %uncomment the rows below if you want to plot the triangulation. 20 %trisurf(tri,x,y,z); 21 %plot3(points(:,1), points(:,2), points(:,3), 'o'); 22 % xlabel('x'); 23 % ylabel('y'); 24 % zlabel('z'); 25 end
77 Copyright The publishers will keep this document online on the Internet - or its possible replacement - for a period of 25 years from the date of publication barring exceptional circumstances. The online availability of the document implies a permanent permission for anyone to read, to download, to print out single copies for your own use and to use it unchanged for any non-commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional on the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility. According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement. For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its WWW home page: Upphovsrätt Detta dokument hålls tillgängligt på Internet - eller dess framtida ersättare - under 25 år från publiceringsdatum under förutsättning att inga extraordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida , Patrik Karlsson Karlsson,
1. Vi skriver upp ekvationssystemet i matrisform och gausseliminerar tills vi når trappstegsform,
Lösningsförslag, Matematik 2, E, I, M, Media och T, 2 2 8.. Vi skriver upp ekvationssystemet i matrisform och gausseliminerar tills vi når trappstegsform, 2 2 2 a 2 2 2 a 2 2-2 2 a 7 7 2 a 7 7-7 2 a +
1 Några elementära operationer.
Föreläsning Några elementära operationer. Ett skalärfält är en reellvärd eller komplexvärd funktion Φ(x, y, z). Ett vektorfält är en vektorvärd funktion A(x, y, z). I ett kartesiskt koordinatsystem kan
Institutionen för Matematik, KTH Torbjörn Kolsrud
Institutionen för Matematik, KTH Torbjörn Kolsrud 5B 7, ifferential- och integralkalkyl II, del 2, flervariabel, för F. Tentamen fredag 25 maj 27, 8.-3. Förslag till lösningar (ändrat 28/5-7, 29/5-7).
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A. 1. En svängningsrörelse beskrivs av
SF166 Flervariabelanalys Lösningsförslag till tentamen 13-3-1 DEL A 1. En svängningsrörelse beskrivs av ( πx ) u(x, t) = A cos λ πft där amplituden A, våglängden λ och frekvensen f är givna konstanter.
Problem inför KS 2. Problem i matematik CDEPR & CDMAT Flervariabelanalys. KTH -matematik
KTH -matematik Problem i matematik EPR & MAT Flervariabelanalys Problem inför KS.. Låt F(, y, z) + y 3z + och G(, y, z) 3 + y 3 4z +. Visa att i en omgivning av punkten (,, ) definieras genom ekvationerna
. b. x + 2 y 3 z = 1 3 x y + 2 z = a x 5 y + 8 z = 1 lösning?
Repetition, Matematik 2, linjär algebra 10 Lös ekvationssystemet 5 x + 2 y + 2 z = 7 a x y + 3 z = 8 3 x y 3 z = 2 b 11 Ange för alla reella a lösningsmängden till ekvationssystemet 2 x + 3 y z = 3 x 2
Analys på en torus. MatematikCentrum LTH
Analys på en torus Anders Källén MatematikCentrum LTH anderskallen@gmail.com Sammanfattning I den här artikeln ska vi diskutera differentialgeometri på en torus, både inbäddad som en badring i rummet och
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF1626 Flervariabelanalys Lösningsförslag till tentamen 213-8-22 DEL A 1. Betrakta funktionen f(x, y) ln(x 2 + xy 2 4). a) Bestäm tangentplanet till funktionsytan z f(x, y) i den punkt på ytan där x 1
= 0. Båda skärningsvinklarna är således π/2 (ortogonala riktningsvektorer).
Institutionen för Matematik, KTH Torbjörn Kolsrud SF163, ifferential- och integralkalkyl II, del 2, flervariabel, för F1. Tentamen torsdag 19 augusti 21, 14. - 19. Inga hjälpmedel är tillåtna. Svar och
Bestäm ekvationen för det plan som går genom punkten (1,1, 2 ) på kurvan och som spänns
UPPSALA UNIVERSITET Matematiska institutionen Anders Källström Prov i matematik Q Flervariabelanalys 8--1 Skrivtid: 8-1. Inga hjälpmedel. Lösningarna skall åtföljas av förklarande text/figurer. Tentand
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF1626 Flervariabelanalys Lösningsförslag till tentamen 216-6-7 DEL A 1. Låt S vara ellipsoiden som ges av ekvationen x 2 + 2y 2 + 3z 2 = 5. (a) Bestäm en normalvektor till S i en punkt (x, y, z ) på S.
SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.
1. Beräkna integralen medelpunkt i origo. SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen 218-3-14 D DEL A (x + x 2 + y 2 ) dx dy där D är en cirkelskiva med radie a och Lösningsförslag.
har ekvation (2, 3, 4) (x 1, y 1, z 1) = 0, eller 2x + 3y + 4z = 9. b) Vi söker P 1 = F (1, 1, 1) + F (1, 1, 1) (x 1, y 1, z 1) = 2x + 3y + 4z.
Institutionen för Matematik, KTH Torbjörn Kolsrud SF163, ifferential- och integralkalkyl II, del, flervariabel, för F1. Tentamen onsdag 7 maj 9, 1.-19. 1. Låt F (x, y, z) sin(x + y z) + x + y + 6z. a)
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF626 Flervariabelanalys Lösningsförslag till tentamen 23-- DEL A. Bestäm en ekvation för tangentplanet i punkten (,, 2 till ellipsoiden 2x 2 +3y 2 +z 2 = 9. (4 p Lösning. Vi uppfattar ytan som nivåytan
SF1626 Flervariabelanalys Tentamen Tisdagen den 7 juni 2016
Institutionen för matematik SF1626 Flervariabelanalys Tentamen Tisdagen den 7 juni 216 Skrivtid: 8:-13: Tillåtna hjälpmedel: inga Examinator: Mats Boij Tentamen består av nio uppgifter som vardera ger
1 x. SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF626 Flervariabelanalys Lösningsförslag till tentamen 26-3-2 DEL A. Låt D vara fyrhörningen med hörn i punkterna, ), 6, ),, 5) och 4, 5). a) Skissera fyrhörningen D och beräkna dess area. p) b) Bestäm
Repetition, Matematik 2 för lärare. Ï x + 2y - 3z = 1 Ô Ì 3x - y + 2z = a Ô Á. . Beräkna ABT. Beräkna (AB) T
Repetition, Matematik 2 för lärare Ï -2x + y + 2z = 3 1. Ange för alla reella a lösningsmängden till ekvationssystemet Ì ax + 2y + z = 1. Ó x + 3y - z = 4 2. Vad är villkoret på talet a för att ekvationssystemet
x ( f u 2y + f v 2x) xy = 24 och C = f
Institutionen för Matematik, KTH Torbjörn Kolsrud SF160, Differential- och integralkalkyl II, del 2, flervariabel, för F1. Tentamen onsdag 0 maj 2012, 8.00-1.00 Förslag till lösningar 1. Bestäm tangentplanet
SF1626 Flervariabelanalys Tentamen Måndagen den 21 mars 2016
Institutionen för matematik SF626 Flervariabelanalys Tentamen Måndagen den 2 mars 26 Skrivtid: 8:-3: Tillåtna hjälpmedel: inga Examinator: Mats Boij Tentamen består av nio uppgifter som vardera ger maximalt
Institutionen för matematik SF1626 Flervariabelanalys. Lösningsförslag till tentamen Måndagen den 5 juni 2017 DEL A
Institutionen för matematik SF66 Flervariabelanalys Lösningsförslag till tentamen Måndagen den 5 juni 7 DEL A. En kulles höjd ges av z 6,x,y där enheten är meter på alla tre koordinataxlar. (a) I vilken
Tentamen : Lösningar. 1. (a) Antingen har täljare och nämnare samma tecken, eller så är täljaren lika med noll. Detta ger två fall:
Tentamen 010-10-3 : Lösningar 1. (a) Antingen har täljare och nämnare samma tecken, eller så är täljaren lika med noll. Detta ger två fall: x 5 0 och 3 x > 0 x 5 och x < 3, en motsägelse, eller x 5 0 och
TMV036/MVE350 Analys och Linjär Algebra K Kf Bt KI, del C
MATEMATIK Hjälpmedel: Inga Chalmers tekniska högskola atum: 23-3-5 kl. 8.3 2.3 Tentamen Telefonvakt: Elin Solberg tel. 73-8834 TMV36/MVE35 Analys och Linjär Algebra K Kf Bt KI, del C Tentan rättas och
Veckoblad 1, Linjär algebra IT, VT2010
Veckoblad, Linjär algebra IT, VT Under den första veckan ska vi gå igenom (i alla fall stora delar av) kapitel som handlar om geometriska vektorer. De viktigaste teoretiska begreppen och resultaten i kapitlet
Repetitionsfrågor i Flervariabelanalys, Ht 2009
Repetitionsfrågor i Flervariabelanalys, Ht 2009 Serier 1. Visa att för en positiv serie är summan oberoende av summationsordningen. 2. Visa att för en absolutkonvergent serie är summan oberoende av summationsordningen.
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF626 Flervariabelanalys Lösningsförslag till tentamen 23-5-27 DEL A. Bestäm alla punkter på ytan z = x 2 + 4y 2 i vilka tangentplanet är parallellt med planet x + y + z =. 4 p) Lösning. Tangentplanet
Övningar. MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Avd. Matematik. Linjär algebra 2. Senast korrigerad:
MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Avd. Matematik Linjär algebra 2 Senast korrigerad: 2006-02-10 Övningar Linjära rum 1. Låt v 1,..., v m vara vektorer i R n. Ge bevis eller motexempel till
2 Funktioner från R n till R m, linjära, inversa och implicita funktioner
Nr, feb -5, Amelia Funktioner från R n till R m, linjära, inversa och implicita funktioner.1 Funktioner från R n till R m Vi har i tidigare föreläsningar sett olika tolkningar av funktioner från R n till
MVE035. Sammanfattning LV 1. Blom, Max. Engström, Anne. Cvetkovic Destouni, Sofia. Kåreklint, Jakob. Hee, Lilian.
MVE035 Sammanfattning LV 1 Blom, Max Engström, Anne Cvetkovic Destouni, Sofia Kåreklint, Jakob Hee, Lilian Hansson, Johannes 11 mars 2017 1 Partiella derivator Nedan presenteras en definition av partiell
MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 2014. Block 5, översikt
MATEMATIK GU H4 LLMA6 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht 24 I block 5 ingår följande avsnitt i Stewart: Kapitel 2, utom avsnitt 2.4 och 2.6; kapitel 4. Block 5, översikt Första delen av block 5
Tentamen i tmv036c och tmv035c, Analys och linjär algebra C för K, Kf och Bt A =, = det(a λi) = e 2t + c 2. x(t) = c 1. = c 1.
Institutionen för matematiska vetenskaper Chalmers tekniska högskola Niklas Eriksen Tentamen i tmv6c och tmv5c, Analys och linjär algebra C för K, Kf och Bt Lösningar 9--6. Lös initialvärdesproblemet x
Viktiga begrepp, satser och typiska problem i kursen MVE460, 2015.
Viktiga begrepp, satser och typiska problem i kursen MVE460, 2015. Begrepp och definitioner Egenskaper och satser Typiska problem Reella tal. Rationella tal. a(b + c) = ab + ac Bråkräkning. Irrationella
Lösningsförslag till tentamen Onsdagen den 15 mars 2017 DEL A
Institutionen för matematik SF66 Flervariabelanalys Lösningsförslag till tentamen Onsdagen den 5 mars 7 DEL A. I nedanstående rätvinkliga koordinatsystem är varje ruta en enhet lång. (a) Bestäm de rymdpolära
LMA515 Matematik, del B Sammanställning av lärmål
LMA515 Matematik, del B Sammanställning av lärmål Lärmål för godkänt Funktion, gränsvärde, kontinuitet, derivata. Förklara begreppen funktion, definitionsmängd och värdemängd, och bestämma (största möjliga)
Inför tentamen i Linjär algebra TNA002.
Inför tentamen i Linjär algebra TNA002. 1. Linjära ekvationssytem (a) Omskrivningen av ekvationssystem på matrisform samt utföra radoperationer. (b) De 3 typer av lösningar som dyker upp vid lösning av
Viktigaste begrepp, satser och typiska problem från kursen ALA-A år 2013.
Viktigaste begrepp, satser och typiska problem från kursen ALA-A år 2013. Reela tal. Rationella tal. Irrationella tal. Slutna intervall. Öppna interlvall. s.5 Koordinater i plan. a(b+c)=ab+ac; Bråkräkning:
Tentamen SF1626, Analys i flera variabler, Svar och lösningsförslag. 2. en punkt på randkurvan förutom hörnen, eller
Tentamen SF66, Analys i flera variabler, --8 Svar och lösningsförslag. Låt fx, y) = ye x y. Bestäm största och minsta värde till f på den slutna kvadraten med hörn i, ),, ),, ) och, ). Lösning. f är kontinuerlig
Linjär algebra på några minuter
Linjär algebra på några minuter Linjära ekvationssystem Ekvationssystem: { Löses på matrisform: ( ) ( ) I det här fallet finns en entydig lösning, vilket betyder att determinanten av koefficientmatrisen
SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A
SF165 Envariabelanalys Lösningsförslag till tentamen 15-4-7 DEL A 1. Låt f(x) = arcsin x + 1 x. A. Bestäm definitionsmängden till funktionen f. B. Bestäm funktionens största och minsta värde. (Om du har
SF1626 Flervariabelanalys Tentamen Tisdagen den 12 januari 2016
Institutionen för matematik SF626 Flervariabelanalys Tentamen Tisdagen den 2 januari 26 Skrivtid: 8:-3: Tillåtna hjälpmedel: inga Examinator: Mats Boij Tentamen består av nio uppgifter som vardera ger
1. För vilka värden på konstanterna a och b är de tre vektorerna (a,b,b), (b,a,b) och (b,b,a) linjärt beroende.
Institutionen för matematik KTH MOELLTENTAMEN Tentamensskrivning, år månad dag, kl. x. (x + 5).. 5B33, Analytiska metoder och linjär algebra. Uppgifterna 5 svarar mot varsitt moment i den kontinuerliga
1. Bestäm definitionsmängden och värdemängden till funktionen f(x,y) = 1 2x 2 3y 2. Skissera definitionsmängden, nivålinjerna och grafen till f.
1. Bestäm definitionsmängden och värdemängden till funktionen f(x,y) = 1 2x 2 3y 2. Skissera definitionsmängden, nivålinjerna och grafen till f. 2. Beräkna gränsvärdet (eller visa att det inte finns):
= ( 1) xy 1. x 2y. y e
Lösningsförslag, Matematik, B, E, I, IT, M, Media och T, -8- Den sista raden är nästan lika med den första raden med omvänt tecken Om vi därför adderar den första raden till den sista raden får vi en rad
SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A
SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen 16-8-18 DEL A 1. Låt D vara det område ovanför x-axeln i xy-planet som begränsas av cirkeln x + y = 1 samt linjerna y = x och y =
f(x, y) = ln(x 2 + y 2 + 1). 3. Hitta maximala arean för en rektangel inskriven i en ellips på formen x 2 a 2 + y2
TM-Matematik Mikael Forsberg Matematik med datalogi, mfl. Flervariabelanalys mk12b Övningstenta vt213 nr1 Skrivtid: 5 timmar. Hjälpmedel är formelbladen från insidan av Pärmen i Adams Calculus, dessa formler
Vektorgeometri. En vektor v kan representeras genom pilar från en fotpunkt A till en spets B.
Vektorgeometri En vektor v kan representeras genom pilar från en fotpunkt A till en spets B. Två pilar AB, A B tilllhör samma vektor om de har samma riktning och samma längd. Vi skriver v = AB = B A B
Stöd inför omtentamen i Linjär algebra TNA002.
LINKÖPINGS UNIVERSITET ITN, Campus Norrköping Univ lekt George Baravdish Stöd inför omtentamen i Linjär algebra TNA002. Läsråd: Detta är ett stöd för dig som vill repetera inför en omtentamen. 1. Börja
(x + 1) dxdy där D är det ändliga område som begränsas av kurvorna
UPPSALA UNIVERSITET Matematiska institutionen Anders Källström Prov i matematik ES, W Flervariabelanalys 8 1 1 Skrivtid: 9-1. Inga hjälpmedel. Lösningarna skall åtföljas av förklarande text/figurer. Varje
INGA HJÄLPMEDEL. Lösningarna ska vara försedda med ordentliga motiveringar. xy dxdy,
LUNS TEKNISKA HÖGSKOLA MATEMATIK TENTAMENSSKRIVNING FLERIMENSIONELL ANALYS --3 kl. 8 3 INGA HJÄLPMEEL. Lösningarna ska vara försedda med ordentliga motiveringar.. Beräkna dubbelintegralen y ddy, där är
Poincarés modell för den hyperboliska geometrin
Poincarés modell för den hyperboliska geometrin Niklas Palmberg, matrikelnr 23604 Uppsats för kandidatexamen i naturvetenskaper Matematiska institutionen Åbo Akademi 12.2.2001 Innehåll 1 Presentation av
Hjälpmedel: utdelad ordlista, ej räknedosa Chalmers tekniska högskola Datum: kl
MATEMATIK Hjälpmedel: utdelad ordlista, ej räknedosa Chalmers tekniska högskola atum: 2-3-9 kl. 8.3 2.3 Tentamen Telefonvakt: Richard Lärkäng tel. 73-8834 TMV36 Analys och Linjär Algebra K Kf Bt, del C
Lösningsförslag till problem 1
Lösningsförslag till problem Lisa Nicklasson november 0 Att beskriva trianglar Vi ska börja med att beskriva hur trianglar kan representeras i x, y)-planet Notera att varje triangel har minst två spetsiga
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF1626 Flervariabelanalys Lösningsförslag till tentamen 215-3-16 DEL A 1. Låt f(x, y) = 1 x 2 y 2. (a) Skissa nivåkurvorna f(x, y) = c till f för c =, c = 1 och c = 2. (1 p) (b) Beräkna gradf(x, y) i de
1. Beräkna hastigheten, farten och accelerationen vid tiden t för en partikel vars rörelse beskrivs av r(t) = (2 sin t + cos t, 2 cos t sin t, 2t).
Repetition, analys.. Beräkna hastigheten, farten och accelerationen vid tiden t för en partikel vars rörelse beskrivs av r(t) = (2 sin t + cos t, 2 cos t sin t, 2t). 2. Beräkna längden av kurvan r(t) =
Tillämpningar av integraler: Area, skivformeln för volymberäkning, båglängd, rotationsarea, integraler och summor
Tillämpningar av integraler: Area, skivformeln för volymberäkning, båglängd, rotationsarea, integraler och summor Areaberäkningar En av huvudtillämpningar av integraler är areaberäkning. Nedan följer ett
SF1626 Flervariabelanalys
1 / 28 SF1626 Flervariabelanalys Föreläsning 2 Hans Thunberg Institutionen för matematik, KTH VT 2018, Period 4 2 / 28 SF1626 Flervariabelanalys Dagens lektion: avsnitt 11.1 11.3 Funktioner från R till
1 Linjära ekvationssystem. 2 Vektorer
För. 1 1 Linjära ekvationssystem Gaußelimination - sriv om systemet för att få ett trappformat system genom att: byta ordningen mellan ekvationer eller obekanta; multiplicera en ekvation med en konstant
Veckoblad 3, Linjär algebra IT, VT2010
Veckoblad 3, Linjär algebra IT, VT Vi inleder den tredje veckan med att gå igenom begreppen determinant och invers matris som vi inte hann med i vecka, se veckoblad för övningar etc på dessa avsnitt. Därefter
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF66 Flervariabelanalys Lösningsförslag till tentamen 4-3-7 EL A. Betrakta funktionen f, y y. a Beräkna riktningsderivatan av f i punkten, i den riktning som ges av vektorn 4, 3. p b Finns det någon riktning
LUNDS TEKNISKA HÖGSKOLA MATEMATIK. LÖSNINGAR FLERDIMENSIONELL ANALYS, FMA kl 8 13
LUNS TEKNISKA HÖGSKOLA MATEMATIK LÖSNINGAR FLERIMENSIONELL ANALYS, FMA40 04-0- kl 8. Vi börjar med att rita triangelskivan. Linjen genom, och, har ekvationen y x+, linjen genom, och, har ekvationen y 4
Kurvlängd och geometri på en sfärisk yta
325 Kurvlängd och geometri på en sfärisk yta Peter Sjögren Göteborgs Universitet 1. Inledning. Geometrin på en sfärisk yta liknar planets geometri, med flera intressanta skillnader. Som vi skall se nedan,
MMA127 Differential och integralkalkyl II
Mälardalens högskola Akademin för utbildning, kultur och kommunikation MMA17 Differential och integralkalkyl II Tentamen Lösningsförslag 9..19 8. 11. Hjälpmedel: Endast skrivmaterial (gradskiva tillåten).
c d Z = och W = b a d c för några reella tal a, b, c och d. Vi har att a + c (b + d) b + d a + c ac bd ( ad bc)
1 Komplexa tal 11 De reella talen De reella talen skriver betecknas ofta med symbolen R Vi vill inte definiera de reella talen här, men vi noterar att för varje tal a och b har vi att a + b och att ab
Övningar. c) Om någon vektor i R n kan skrivas som linjär kombination av v 1,..., v m på precis ett sätt så. m = n.
Övningar Linjära rum 1 Låt v 1,, v m vara vektorer i R n Ge bevis eller motexempel till följande påståenden Satser ur boken får användas a) Om varje vektor i R n kan skrivas som linjär kombination av v
SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A
SF626 Flervariabelanalys Lösningsförslag till tentamen 24-8-2 DEL A. Bestäm och skissera definitionsmängden till funktionen fx, y) = x 2 + y 2 + 2x 4y + + x. Är definitionsmängden kompakt? 4 p) Lösning.
Lösningsförslag till tentamen Tisdagen den 10 januari 2017 DEL A
Institutionen för matematik SF66 Flervariabelanalys Lösningsförslag till tentamen Tisdagen den januari 7 DEL A. En partikel rör sig så att positionen efter starten ges av (x, y, z (t cos t, t sin t, t
Lösningar till tentamen i Matematik II, 5B1116, 5B1136 för Bio. E,I,K,ME, Media och OPEN, tisdagen den 13 april 2004.
Institutionen för matematik. KTH Lösningar till tentamen i Matematik II, B1116, B1136 för Bio. E,I,K,ME, Media och OPEN, tisdagen den 13 april 2004. 1. Välj en punkt i planet 3x + 3y z = 4, exempelvis
SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A
SF1624 Algebra och geometri Lösningsförslag till tentamen 2011-06-09 DEL A (1) Betrakta ekvationssystemet x y 4z = 2 2x + 3y + z = 2 3x + 2y 3z = c där c är en konstant och x, y och z är de tre obekanta.
Crash Course Algebra och geometri. Ambjörn Karlsson c januari 2016
Crash Course Algebra och geometri Ambjörn Karlsson c januari 2016 ambjkarlsson@gmail.com 1 Contents 1 Projektion och minsta avstånd 4 2 Geometriska avbildningar och avbildningsmatriser 5 3 Kärnan 6 3.1
ax + y + 4z = a x + y + (a 1)z = 1. 2x + 2y + az = 2 Ange dessutom samtliga lösningar då det finns oändligt många.
LUNDS TEKNISKA HÖGSKOLA MATEMATIK TENTAMENSSKRIVNING Linjär algebra 8 kl 4 9 INGA HJÄLPMEDEL. För alla uppgifterna, utom 3, förklara dina beteckningar och motivera lösningarna väl. Alla baser får antas
Tentamen: Lösningsförslag
Tentamen: Lösningsförslag Fredag 9 juni 7 8:-: SF67 Flervariabelanalys Inga hjälpmedel är tillåtna. Ma: poäng. poäng Bestäm samtliga horisontella tangentplan till ytan z y y + y +. Lösning: Tangentplanet
Lektion 1. Kurvor i planet och i rummet
Lektion 1 Kurvor i planet och i rummet Innehål Plankurvor Rymdkurvor Innehål Plankurvor Rymdkurvor Tangentvektorn och tangentens ekvation Innehål Plankurvor Rymdkurvor Tangentvektorn och tangentens ekvation
Linjära avbildningar. Låt R n vara mängden av alla vektorer med n komponenter, d.v.s. x 1 x 2. x = R n = x n
Linjära avbildningar Låt R n vara mängden av alla vektorer med n komponenter, d.v.s. R n = { x = x x. x n } x, x,..., x n R. Vi räknar med vektorer x, y likandant som i planet och i rymden. vektorsumma:
Detta cosinusvärde för vinklar i [0, π] motsvarar α = π 4.
LUNDS TEKNISKA HÖGSKOLA MATEMATIK LÖSNINGAR LINJÄR ALGEBRA 8-- kl 4-9 a) Triangelns area är en halv av parallellograms area som spänns upp av tex P P (,, ) och P P (,, ), således area av P P P (,, ) (,,
SF1646 Analys i flera variabler Tentamen 18 augusti 2011, Svar och lösningsförslag
SF1646 Analys i flera variabler Tentamen 18 augusti 11, 14. - 19. Svar och lösningsförslag (1) Låt f(x, y) = xy ln(x + y ). I vilken riktning är riktningsderivatan till f i punkten (1, ) som störst, och
x +y +z = 2 2x +y = 3 y +2z = 1 x = 1 + t y = 1 2t z = t 3x 2 + 3y 2 y = 0 y = x2 y 2.
Lösningar till tentamen i Inledande matematik för M/TD, TMV155/175 Tid: 2006-10-27, kl 08.30-12.30 Hjälpmedel: Inga Betygsgränser, ev bonuspoäng inräknad: 20-29 p. ger betyget 3, 30-39 p. ger betyget 4
Vektorgeometri för gymnasister
Vektorgeometri för gymnasister Per-Anders Svensson http://homepage.lnu.se/staff/psvmsi/vektorgeometri/gymnasiet.html Fakulteten för teknik Linnéuniversitetet Räta linjens och planets ekvationer II Innehåll
Flervariabelanalys E2, Vecka 3 Ht08
Flervariabelanalys E2, Vecka 3 Ht8 Omfattning och innehåll 2.7 Gradienter och riktningsderivator. 2.8 Implicita funktioner 2.9 Taylorserier och approximationer 3. Extremvärden 3.2 Extremvärden under bivillkor
1. Beräkna och klassificera alla kritiska punkter till funktionen f(x, y) = 6xy 2 2x 3 3y 4 2. Antag att temperaturen T i en punkt (x, y, z) ges av
ATM-Matematik Mikael Forsberg 74-41 1 För ingenjörs- och distansstudenter Flervariabelanalys ma1b 15 1 14 Skrivtid: 9:-14:. Inga hjälpmedel. Lösningarna skall vara fullständiga och lätta att följa. Börja
TANA09 Föreläsning 8. Kubiska splines. B-Splines. Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.
TANA09 Föreläsning 8 Kubiska splines Approximerande Splines s s s s 4 B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor. x x x x 4 x 5 Exempel Parametriska Kurvor. Ritprogram. Beziér kurvor.
DERIVATA. = lim. x n 2 h h n. 2
DERIVATA Läs avsnitten 6.-6.5. Lös övningarna 6.cd, 6.2, 6.3bdf, 6.4abc, 6.5bcd, 6.6bcd, 6.7, 6.9 oc 6.. Läsanvisningar Allmänt gäller som vanligt att bevisen inte ingår i kursen, men det är mycket nyttigt
P Q = ( 2, 1, 1), P R = (0, 1, 0) och QR = (2, 2, 1). arean = 1 2 P Q P R
1 Matematiska Institutionen KTH Lösningar till några övningar på geometri och vektorer inför lappskrivning nummer 2 på kursen Linjär algebra II, SF1604, vt11. 1. En triangel har hörn i punkterna (1, 2,
Vektorgeometri för gymnasister
Vektorgeometri för gymnasister Per-Anders Svensson http://homepage.lnu.se/staff/psvmsi/vektorgeometri/gymnasiet.html Fakulteten för teknik Linnéuniversitetet Räta linjens och planets ekvationer I Innehåll
Banach-Tarskis paradox
Banach-Tarskis paradox Tony Johansson 1MA239: Specialkurs i Matematik II Uppsala Universitet VT 2018 Banach-Tarskis paradox, bevisad 1924 och döpt efter Stefan Banach och Alfred Tarski, är en sats inom
LYCKA TILL! kl 8 13
LUNDS TEKNISK HÖGSKOL MTEMTIK TENTMENSSKRIVNING Linjär algebra 0 0 kl 8 3 ING HJÄLPMEDEL Förklara dina beteckningar och motivera lösningarna väl Om inget annat anges är koordinatsystemen ortonormerade
SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A
SF1625 Envariabelanalys Lösningsförslag till tentamen 214-1-24 DEL A 1. Låt f(x) = e x sin x. A. Bestäm alla kritiska (stationära) punkter till funktionen f. B. Avgör vilka av de kritiska punkterna som
TMV036 Analys och linjär algebra K Kf Bt, del C
MATEMATIK Chalmers tekniska högskola Tentamen 20-0-, kl. 4.00-8.00 TMV036 Analys och linjär algebra K Kf Bt, del C Telefonvakt: Richard Lärkäng, telefon: 0703-088304 Hjälpmedel: Inga, bara papper och penna.
SKRIVNING I VEKTORGEOMETRI
SKRIVNING I VEKTORGEOMETRI 201-0-0 14.00-17.00 Om inget annat uttryckligen sägs, kan koordinaterna för en vektor i antas vara givna i en ON-bas. Baser i rummet kan dessutom antas vara positivt orienterade.
1 som går genom punkten (1, 3) och är parallell med vektorn.
KTH Matematik Extra uppgifter på linjär algebra SF1621 Analytiska metoder och linjär algebra 2 för OPEN och T Förkunskaper Obs en del av detta är repetition från förra kursen Men innan ni ens börjar med
Vektorgeometri för gymnasister
Vektorgeometri för gymnasister Per-Anders Svensson http://homepage.lnu.se/staff/psvmsi/vektorgeometri/gymnasiet.html Fakulteten för teknik Linnéuniversitetet Linjära avbildningar IV Innehåll Nollrum och
SF1624 Algebra och geometri
SF1624 Algebra och geometri Föreläsning 2 David Rydh Institutionen för matematik KTH 28 augusti 2018 Detta gjorde vi igår Punkter Vektorer och skalärer, multiplikation med skalär Linjärkombinationer, spannet
DEL I. Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 17 april 2010 kl
Matematiska Institutionen KTH Lösning till tentamensskrivning på kursen Linjär algebra II, SF604, den 7 april 200 kl 09.00-4.00. DEL I. En triangel i den tredimensionella rymden har sina hörn i punkterna
SF1626 Flervariabelanalys Tentamen 18 augusti 2011, Svar och lösningsförslag
SF166 Flervariabelanalys entamen 18 augusti 11, 14. - 19. Svar och lösningsförslag 1) Låt fx, y) = xy lnx + y ). I vilken riktning är riktningsderivatan till f i punkten 1, ) som störst, och hur stor är
Vektorgeometri för gymnasister
Vektorgeometri för gymnasister Per-Anders Svensson http://homepage.lnu.se/staff/psvmsi/vektorgeometri/gymnasiet.html Fakulteten för teknik Linnéuniversitetet Linjära avbildningar II Innehåll Repetition:
Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara
Föreläsning 1 Jag hettar Thomas Kragh och detta är kursen: Flervariabelanalys 1MA016/1MA183. E-post: thomas.kragh@math.uu.se Kursplan finns i studentportalens hemsida för denna kurs. Där är två spår: Spår
Lektion 3. Partiella derivator, differentierbarhet och tangentplan till en yta, normalen i en punkt till en yta, kedjeregeln
Lektion 3 Partiella derivator, differentierbarhet och tangentplan till en yta, normalen i en punkt till en yta, kedjeregeln Innehål 1. Partiella derivator (12.3) 2. Differentierbarhet och tangentplan till
SF1626 Flervariabelanalys Tentamen Måndagen den 16 mars 2015
Institutionen för matematik SF1626 Flervariabelanalys Tentamen Måndagen den 16 mars 215 Skrivtid: 8:-13: Tillåtna hjälpmedel: inga Examinator: Mats Boij Tentamen består av nio uppgifter som vardera ger
e = (e 1, e 2, e 3 ), kan en godtycklig linjär
Linjära avbildningar II Förra gången visade vi att givet en bas i rummet, e = (e 1, e 2, e 3 ), kan en godtycklig linjär avbildning F : R 3 R 3 representeras av en matris: Om vi betecknar en vektor u:s
Tentamen: Lösningsförslag
Tentamen: Lösningsförslag Onsdag 5 mars 7 8:-3: SF674 Flervariabelanalys Inga hjälpmedel är tillåtna. Max: 4 poäng. 4 poäng Avgör om följande gränsvärde existerar och beräkna gränsvärdet om det existerar:
Övningstenta: Lösningsförslag
Övningstenta: Lösningsförslag Onsdag 5 mars 7 8:-: SF674 Flervariabelanalys Inga hjälpmedel är tillåtna. Max: 4 poäng. (4 poäng) Bestäm tangentplanet i punkten (,, ) till ytan z f(x, y) där f(x, y) x 4
Tentamen TMA044 Flervariabelanalys E2
Tentamen TMA44 Flervariabelanalys E 4--3 kl. 8.3.3 Examinator: Peter Hegarty, Matematiska vetenskaper, halmers Telefonvakt: Elin Solberg, telefon: 73 88 34 Hjälpmedel: bifogat formelblad, ordlistan från