• No results found

Diskret krökning, en jämförelse

N/A
N/A
Protected

Academic year: 2021

Share "Diskret krökning, en jämförelse"

Copied!
77
0
0

Loading.... (view fulltext now)

Full text

(1)

Examensarbete

Diskret krökning, en jämförelse.

Patrik Karlsson

(2)
(3)

Diskret krökning, en jämförelse.

Matematik och tillämpad matematik, Linköpings Universitet Patrik Karlsson

LiTH - MAT - EX - - 2012/05 - - 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 ap-proximera 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 (in-scannade 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 varand-ra. 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

(6)

points. These surfaces are differentiable which makes it possible to approxi-mate 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 trian-gulated surface, which itself is a hard problem to solve (at least if one has requirements on the triangulation). Their approximations of the Gauss and me-an curvatures use a well chosen area around the point, me-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 geome-tri, Fundamentalformer, Principalkrökning, Normalkrökning, Gausskrök-ning, MedelkrökGausskrök-ning, Gauss-Bonnet, Ytor, Differentialgeometri, Triangu-lering

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.

(8)
(9)

Terminologi

Symboler

(x,y) Skalärprodukten av x och y ||x|| Vektornormen av x

σx0 Den partiella derivatan av σ med avseende på variabeln x υ Farten hos en kurva

I Första fundamentalformen II Andra fundamentalformen

FI Första fundamentalformen representerad av en matris FII Andra fundamentalformen representerad av en matris W Weingartenavbildningen

˙γ(t) Derivatan av γ

γ0(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, 2012. ix

(10)
(11)

Innehåll

1 Inledning 1

2 Differentialgeometri 3

2.1 Ytor . . . 3

2.1.1 Definition och egenskaper . . . 3

2.1.2 Normaler och tangentplan . . . 6

2.2 Krökningar . . . 7

2.2.1 Första fundamentalformen . . . 7

2.2.2 Andra fundamentalformen . . . 9

2.2.3 Normalkrökning och principalkrökningar . . . 11

2.2.4 Gausskrökning . . . 13

2.2.5 Geodeser och geodetisk krökning . . . 14

2.2.6 Gauss-Bonnets sats . . . 15 3 Algoritmer 19 3.1 Bézierytor . . . 19 3.1.1 Bézierkurvor . . . 19 3.1.2 Bézierytor . . . 23 3.2 Triangulering av ytor i R3 . . . 25 3.2.1 Delaunay triangulering . . . 26 3.2.2 Triangulerings-algoritmen . . . 26 3.2.3 Kommentarer . . . 28

3.3 Artikeln “Discrete Differential-Geometry Operators for Triangu-lated 2-Manifolds” . . . 28

3.3.1 Diskretisering av geometriska egenskaper . . . 28

3.3.2 Approximation av gausskrökning . . . 29

3.3.3 Artikelns resultat . . . 32

4 Resultat 35 4.1 Resultat för Bézierytor . . . 36

4.2 Resultat för “Discrete Diffierential-Geometry Operators for Tri-angulated 2-Manifolds” algoritm . . . 39

5 Slutsatser och diskussion 45 A Matlabkoder 49 A.1 beziercurvature . . . 49

A.2 Beziersurface . . . 50

A.3 diffbezier . . . 50

(12)

A.4 discurv . . . 52

A.5 discurv2 . . . 56

A.6 renderbsurface . . . 60

(13)

Tabeller

3.1 Artikelns resultat . . . 32

4.1 Approx. med Bézieryta av 49 punkter . . . 36

4.2 Approx. med Bézieryta av 256 punkter . . . 37

4.3 Approx. med Bézieryta av 1024 punkter . . . 38

4.4 Approx. med Bézieryta av 16384 punkter . . . 38

4.5 Approx. av krökningar med triangulering av 49 punkter . . . 39

4.6 Approx. av krökningar med triangulering av 256 punkter . . . 40

4.7 Approx. av krökningar med triangulering av 1024 punkter . . . . 40

4.8 Approx. av krökningar med triangulering av 16384 punkter . . . 41

4.9 Approx. av krökningar med konvexa höljet, 256punkter . . . 42

4.10 Approx. av krökningar med konvexa höljet, 1024 punkter . . . . 43

4.11 Approx. av krökningar med konvexa höljet, 16384 punkter . . . . 43

4.12 Bästa approximationerna av gausskrökningen . . . 44

4.13 Bästa approximationerna av medelkrökningen . . . 44

4.14 Tidsåtgång för algoritmerna . . . 44

(14)
(15)

Figurer

2.1 Inre vinkel α och yttre vinkel β. . . 16

3.1 Grafen över B(t) och kontrollfiguren. . . 20

3.2 Grafen av B(t). . . 25 3.3 Triangulering av halvsfären . . . 27 3.4 Voronoiområdet för en triangel . . . 30 3.5 1-ringsområde . . . 31 4.1 Bézieryta av 49 punkter . . . 36 4.2 Bézieryta av 256 punkter . . . 37 4.3 Bézieryta av 1024 punkter . . . 38 4.4 Triangulering av 49 punkter . . . 39 4.5 Triangulering av 256 punkter . . . 40 4.6 Triangulering av 1024 punkter . . . 41

4.7 Konvexa höljet av sfären med 256 punkter . . . 42

4.8 Konvexa höljet av sfären med 1024 punkter . . . 43

(16)
(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ök-ningen, 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 egen-skaper, 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 medel-krö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 reflek-teras 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 diskre-tisering. Denna diskretisering av krökningar bör ha en stark analogi med den analytiska och vara relativt enkel att implementera. Samtidigt som diskretise-ringen 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 inter-polerad eller används någon form av nätverk mellan punkterna och hur approx-imationer 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 Cas-teljau 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.

(18)

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 Mat-lab.

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, spe-ciellt 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.

2.1.1

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 R3 en mängd som täcks av delmängder som är som planet; dvs man har en samling homeomorfier σ : U → W ∩ S. Sådana homeo-morfier kallas för kartor, parametriseringar eller koordinatsystem.

Definition 2. En homeomorfism σ: U → R3 kallas för enreguljär karta om: 1. Den är oändligt deriverbar.

2. Vektorerna σx0 och σy0 är linjärt oberoende i varje punkt p = (x, y) ∈ U

( ⇔ σx0 × σ0y6= 0 ) [7].

Speciellt kommer vi kräva att varje reguljär karta är en diffeomorfism.

(20)

Exempel 2.1.1. Enhetssfären

S2= {(x, y, z) ∈ R3|x2+ y2+ z2= 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 R2 (dock täcker de hela

ytan) och vi får problem med inversen. Däremot kan vi skapa den öppna mäng-den:

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 gemensam-ma punkter än icke-gemensamgemensam-ma punkter), dvs två kartor överlappar varandra vilket innebär att σ(x, y) = p = ˆσ(ˆx, ˆy), där p är en punkt på ytan. Vi får följande definition.

Definition 3. Låt σ : U → S ∩ W och ˆσ : ˆU → S ∩ ˆW vara två kartor för ytan S. Vidare, låt p ∈ S ∩ W ∩ ˆW . Då vi vet att σ och ˆσ är inverterbara på mängden S ∩ W ∩ ˆW så ∃ två öppna mängder V ⊂ U och ˆV ⊂ ˆU , så att ψ= σ−1ˆσ : ˆV → V är en diffeomorfism och kallas för en överföringsfunktion,

vilket ger oss:

ˆσ(ˆx, ˆy) = σ(ψ(ˆx, ˆy)) ⇔ ˆσ = σ ◦ ψ : ˆV → R3 Alltså är ˆσ en omparametrisering av σ. [7]

(21)

2.1. Ytor 5

Exempel 2.1.2. Låt oss titta på sfären S2 som kan täckas med den

stereogra-fiska projektionen, vi börjar med kartan σS : R2→ S2\ {(0, 0, −1)}: (x, y) → 2x x2+ y2+ 1, 2y x2+ y2+ 1, 1 − x2− y2 x2+ y2+ 1 

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 : R2→ S2\ {(0, 0, 1)}:

(x, y) → 2x x2+ y2+ 1, 2y x2+ y2+ 1, x2+ y21 x2+ y2+ 1 

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:

σ−1S (x, y, z) =  x z+ 1, y z+ 1  σ−1N (x, y, z) =  x 1 − z, y 1 − z 

Alltså är dessa kartor diffeomorfismer; derivatan hos kartan och inversen exi-sterar.

Överföringsfunktionen mellan dessa kartor bestäms med inverserna, vilket ger: σN−1◦ σS= σ−1S ◦ σN =  x x2+ y2, y x2+ y2  .

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 2.1.3. Vi fortsätter att titta på enhetssfären S2, dock ska vi ta fram

en del av S2:

S= {(x, y, z) | x2+ y2+ z2= 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 R2 :

U = {(x, y) | x2+ y2<1 , x > 0, y > 0}

Eftersom vi vill kunna bestämma krökningen senare så behöver vi en diffe-rentierbar yta, dvs vi vill att kartan ska vara en diffeomorfism. Vi låter därför σ definieras av:

(22)

σ: (x, y) → (x, y,p1 − x2− y2)

Enligt definitionen så ska vi även hitta en öppen mängd W ⊂ R3, 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 funk-tioner 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).

2.1.2

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 ap-proximeras kring en punkt p mha tangentplanet, vilket ger en linjär approxima-tion 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 Tp 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 Tp tack vare följande sats:

Sats 1. Tangentplanet Tp vid punkten p ∈ S är vektorrummet som spänns upp

av vektorerna σ0x och σ0y, 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 σ0

xoch σy0.

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 σx0 , σ0y och därmed (enhets)normalen: = σx0 × σ0 y ||σ0 x× σ0y|| ,

där derivatorna är beräknade i punkten p.

Exempel 2.1.4. Betrakta ytan som vi hade i senaste exemplet:

S= {(x, y, z) | x2+ y2+ z2= 1 , x > 0, y > 0, z > 0} Vi vet från förra exemplet att en parametrisering är given av σ: (x, y) → (x, y, p1 − x2− y2). Deriverar vi σ får vi: σx0 = (1, 0, −p x 1 − x2− y2) σ 0 y= (0, 1, − y p 1 − x2− y2)

(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): σ0x(1/2, 1/2) = (1, 0, −√1 2), σ 0 y(1/2, 1/2) = (0, 1, − 1 √ 2) ⇒ = (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ök-ningen 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å de-lar, 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 γ0 som derivatan av funktionen med den parametrisering som ger fart 1.

2.2.1

Första fundamentalformen

Med hjälp av första fundamentalformen så kommer vi kunna beräkna avstånd

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

t0 ges av:

s= Z t

t0

||˙γ(τ)||dτ, där ||γ|| är den Euklidiska normen.

Farten av en kurva γ ges av υ = || ˙γ(t)|| = ˙s.

Användning av kedjeregeln på en kurva γ(t) ger: ˙γ(t) = ˙sγ0(t) = υγ0(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) = σ0

(24)

||˙γ(t)||2= (σ0

x˙x + σ0y˙y, σ0x˙x + σ0y˙y) = (σ0

x, σx0) ˙x2+ (σ0x, σy0) ˙x ˙y + (σy0, σ0x) ˙y ˙x + (σy0, σy0) ˙y2 = (σ0 x, σ 0 x) ˙x 2+ 2(σ0 x, σ 0 y) ˙x ˙y + (σ 0 y, σ 0 y) ˙y 2 = E ˙x2+ 2F ˙x ˙y + G ˙y2 där E= ||σx0||2, F = (σ0 x, σ 0 y), G = ||σ 0 y|| 2.

Sätter vi in || ˙γ(t)|| = p|| ˙γ(t)||2= pE ˙x2+ 2F ˙x ˙y + G ˙y2 i integralen får vi s=

Z t

t0

(E ˙x2+ 2F ˙x ˙y + G ˙y2)1/2 Den första fundamentalformen för σ ges av

I = E ˙x2+ 2F ˙x ˙y + G ˙y2 vilket kan representeras av följande matris

FI= E F

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 kryssproduk-ten, 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(FI)1/2 över denna delen av ytan.

Vill man läsa mer om dessa två och deras kopplingar till första fundamental-formen så är [7] en utmärkt bok.

Exempel 2.2.1. 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= Z 1 0 ||˙γ(t)||dt = Z 1 0 p π2((−sinφ)2+ (cosφ)2+ 02)dφ = π − 0 = π.

(25)

2.2. Krökningar 9

σ0θ= (−sinθcosφ, −sinθsinφ, cosθ) ⇒ E = 1 σ0φ= (−cosθsinφ, cosθcosφ, 0) ⇒ G = cos2θ F = (σθ0, σφ0) = 0 ˙θ(t) = 0 ˙φ(t) = π Vi får då: s= Z 1 0 q E ˙θ2+ F ˙θ ˙φ + G ˙φ2dt= Z 1 0 p π2cos2(θ(t))dt = π. Vi får samma avstånd.

2.2.2

Andra fundamentalformen

Krökningen av en kurva i R2 definieras som κ = ||γ00||. Men för att kunna definiera krökningen av en yta i R3behöver vi en annan tolkning av krökningen hos kurvor i R2. 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 +1

2¨γ(t)(∆t)

2+ rest

där rest/(∆t)20 när t → 0.

Principalnormalen n är ortogonal mot enhetstangenten t = ˙γ och ¨γ = ˙t =

κn, där κ alltså är krökningen av γ som ges av κn = κgN × t+ κnN. Vi får alltså att (¨γ, n) = κ och ( ˙γ, n) = 0 vilket ger:

(γ(t + ∆t) − γ(t), n) = ( ˙γ(t)∆t +12¨γ(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 R3. Låt σ vara en karta i R3 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) = σx0∆x+σ0y∆y+1 2 σxx00 (∆x) 2+2σ00 xy∆x∆y+σ 00 yy(∆y) 2+rest

Som för kurvan så gäller det att N är ortogonal mot tangentvektorerna σ0 x och σ0

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)

1

2 L(∆x)2+ 2M∆x∆y + N(∆y)2

+ rest

där

L= (σxx00 , N), M = (σxy00 , N) och N = (σyy00 , N).

Man definierar den andra fundamentalformen som II = Ldx2+ 2Mdxdy + Ndy2 vilket kan representeras på matrisform med

FII =

 L M

M N



Exempel 2.2.2. Vi skall beräkna den andra fundamentalformen för

σ(x, y) = (x, y, x2+ y2).

Vi börjar med att räkna ut alla partiella derivator och andraderivator.

σ0x= (1, 0, 2x) ⇒ σ00xx= (0, 0, 2) σ0y= (0, 1, 2y) ⇒ σ00yy = (0, 0, 2)

σxy00 = (0, 0, 0)

Sedan behöver vi enhetsnormalen N för att få ut den andra fundamentalfor-men: σ0x× σy0 = (−2x, −2y, 1) ||σ0x× σ0y|| = p4x2+ 4y2+ 1 N= σ 0 x× σy0 ||σ0 x× σy0|| = λ(−2x, −2y, 1) där λ=p 1 4x2+ 4y2+ 1.

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

(27)

2.2. Krökningar 11

Exempel 2.2.3. Vi vill bestämma den andra fundamentalformen till

enhetssfä-ren S2, på kartan given av σ(θ, φ) = (cosθcosφ, cosθsinφ, sinθ), −π

2 < φ, θ < π 2.

Vi får:

σθ0 = (−sinθcosφ, −sinθsinφ, cosθ) σφ0 = (−cosθsinφ, cosθcosφ, 0) σθθ00 = (−cosθcosφ, −cosθsinφ, −sinθ)

σ00φφ = (−cosθcosφ, −cosθsinφ, 0) σθφ00 = (sinθsinφ, −sinθcosφ, 0) N= σ 0 θ× σφ0 ||σ0 θ× σφ0||

= (−cosθcosφ, −cosθsinφ, −sinθ),

vilket ger oss

L= 1, M = 0, N = cos2θ och andra fundamentalformen blir

2+ cos2θdφ2.

2.2.3

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 γ0 är ortogonal mot ytans normal N och båda är enhetsvektorer. Tillsammans med vektorn given av N×t så spänner dessa upp R3, dvs {t, N, N× t} är ett ON-system. Eftersom γ00 ⊥ t så får vi γ00 = κ

nN+ κ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= (γ00, N),

där γ00= κ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 ˙x2+ 2M ˙x ˙y + N ˙y2,

där Ldx2+ Mdxdy + Ndy2 är andra fundamentalformen för σ.[7]

Sambandet κn = (γ00, N) och användning av kedjeregeln bevisar satsen. Eftersom andra fundamentalformen är kvadratisk så kan vi även ge ett ut-tryck för normalkrökningen på matrisform:

(28)

κn=  ˙x ˙y  L M M N  ˙x ˙y 

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 = (γ00, N) och ˙γ =

υγ0 ⇒¨γ = ˙υγ0+ υ2κn(kedjeregeln ger: d/dt = d/ds · ds/dt, där ds/dt = υ) och vi får då att (¨γ, N) = ( ˙υγ0+ υ2κn, N) = υ2(κn, N) = υ2κ n. Vi får alltså: κn= TtF IIT υ2 ⇔ κn= TtF IIT TtF IT , där T = ˙x ˙y 

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ökning-en och då finns det ävnormalkrökning-en ett maximum och minimumvärde, som kallas prin-cipalkrökningar. De riktningar som ger upphov till dessa principalkrökningar kallas för principalriktningar.

Principalkurvorna (integrerande kurvor till principalvektorerna) är profil-kurvor som ger information om hur ytan ser ut, vilket är mycket användbart inom datorgrafik. I artikeln “Curvature and torsion feature extraction from fre-eform 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(FII− kFI) = 0.

och principalvektorerna på formen t= ξσ0x+ ησ0y med principalkrökning κi

upp-fyller följande ekvation

(FII− κiFI)T = 0, T =

η



. [7]

Det går även att skriva om definitionen, FI är inverterbar ([7] proposition 5.2) och vi får därmed:

det(FI−1FII− kI) = 0

Alltså är principalkrökningarna egenvärdena till W = FI−1FII, denna avbild-ning kallas för Weingartenavbildavbild-ningen. Weingartenavbildavbild-ningen W ger hur N ändrar sig i de olika riktningarna omkring punkten.

Vi illustrerar med ett exempel.

Exempel 2.2.4. Vi vill räkna ut principalkrökningarna och

principalriktning-arna till enhetssfären S2 med parametriseringen:

σ(θ, φ) = (cosθcosφ, cosθsinφ, sinθ). Vi vet sedan tidigare att

(29)

2.2. Krökningar 13

σ0θ= (−sinθcosφ, −sinθsinφ, cosθ) σφ0 = (−cosθsinφ, cosθcosφ, 0) II = dθ2+ cos2θdφ2

och därmed får vi första fundamentalformen till: E= ||σ0θ||2= 1, F = (σ0 θ, σ 0 φ) = 0, G = ||σ 0 φ|| 2= cos2θ.

Låt oss nu räkna ut principalkrökningarna: det(FII− κFI) = det

1 − κ 0

0 cos2θ − κcos2θ 

= cos2θ(1 − κ)2= 0

Vi får alltså dubbelrötterna κ1,2 = 1 och principalriktningarna är vilken

tan-gentriktning 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.

2.2.4

Gausskrökning

Oftast används två andra sorters krökningar, nämligen gausskrökning och me-delkrö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:

K= κ1κ2

och medelkrökningen definieras av:

H = 1

21+ κ2) [7].

Gausskrökningen ändras inte av omparametrisering och är därmed väldefi-nierad för en yta. Medelkrökningen däremot kan ändra tecken vid omparamet-risering.

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 Weingartenav-bildningen W = FI−1FII. Vi får då från linjär algebra:

det(W) = det(FI−1FII) =

det(FII)

det(FI) = κ

1κ2= K, som vi kan skriva om till

K= LN − M

2

EG − F2,

där L, N, M är koefficienterna i andra fundamentalformen och E, G, F är koef-ficienterna i första fundamentalformen.

Det är även relativt enkelt att få fram en formel för beräkning av medel-krökningen H = 1

21+ κ2), vi utgår från Weingartenavbildningen igen och får från linjär algebra:

(30)

H =1 2T r(W) = 1 2T r(FI−1FII) =  FI−1= 1 detFI  G −F −F E   = = 12T r  1 det(FI)  LG − M F M G − N F −LF+ ME −M F + NE   = LG −2(EG − F2MF + NE2) där T r är spåret.

Vi får alltså följande formel för medelkrökningen

H= LG −2MF + NE

2(EG − F2) .

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 2.2.5. Beräkna gauss- och medelkrökningen i punkten (1,1) för

föl-jande karta:

σ(x, y) = (x, y, x2+ y2)

Vi börjar med att hitta koefficienterna för första och andra fundamentalfor-men: σ0x(1, 1) = (1, 0, 2), σy0(1, 1) = (0, 1, 2) ⇒ N= (−2, −2, 1) 3 σ00xx(1, 1) = (0, 0, 2), σxy00 (1, 1) = (0, 0, 0), σyy00 (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 − F2 = 4 9−0 25 − 16 = 4 81 H =LG −2MF + NE 2(EG − F2) = 20 3 18 = 10 27

2.2.5

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 ⇔ ¨γ || NS ∀t, där NS ä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

geo-detiska 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].

2.2.6

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 R2 är en kontinuerlig avbildning

π : R → R2 så att det för något reellt tal a och punkter 0 = t

0 < t1 < . . . < tn = a gäller 1. π(t) = π(t0) ⇔ t0− t= na, n ∈ N; 2. π är snäll på de öppna intervallen(t0, t1), (t1, t2) . . . (tn−1, tn); 3. de ensidiga derivatorna ˙π(t i) = lim t↑ti π(t) − π(ti) t − ti , ˙π+(ti) = lim t↓ti π(t) − π(ti) t − ti

(32)

Vidare låter vi βi vara vinkeln mellan ˙πi och ˙π +

i vid punkten π(ti) [7]. En kroklinjig månghörning på en karta σ : U → R3 definieras av:

Definition 11. Låt π: R → U vara en kroklinjig månghörning i R2, dvs den

uppfyller föregående definition. Då får vi en kroklinjig månghörning på kartan σ genom följande avbildning: γ= σ ◦ π.

Punkterna γ(ti) är hörnen i månghörningen och de öppna intervallen (ti−1, ti) ä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:

Z l(γ) 0 κgds= n X i=1 αi(n − 2)π − Z Z int(γ) KdAσ,

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

βigenom att använda följande samband:

βi+ αi= π ⇔ αi= π − βi, vilket kan ses i följande figur:

(33)

2.2. Krökningar 17

Vi får då Gauss-Bonnets sats till följande: Z l(γ) 0 κgds= n X i=1 αi(n − 2)π − Z Z int(γ) KdAσ⇔ Z l(γ) 0 κgds= n X i=1 (π − βi) − (n − 2)π − Z Z int(γ) KdAσ ⇔ Z l(γ) 0 κgds= 2π − n X i=1 βi− Z Z int(γ) KdAσ

Bevis och ytterligare varianter på satsen finns i [7].

Exempel 2.2.6. Antag att vi har en geodetisk triangel som ligger

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 =Z l(γ) 0 κgds= n X i=1 αi(3 − 2)π − Z Z int(γ) 1dA ⇔ Z Z int(γ)

(34)
(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/kur-vor 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.

3.1.1

Bézierkurvor

En Bézierkurva definieras av:

Definition 12. Givet de n+1 kontrollpunkterna b0, b1, . . . , bn så ges

Bézier-kurvan av grad n av:

B(t) = n X

i=0

biBi,n(t), 0 ≤ t ≤ 1.

Där varje punkt bi∈ Rk, och Bernsteinpolynomen Bi,n(t) ges av

Bi,n(t) = ( n!

(n−i)!i!(1 − t)

n−iti, om0 ≤ 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

(36)

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 bi 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 3.1.1. Givet kontrollpunkterna b0 = (0, 0), b1 = (1, 1) och b2 = (2, 0) så ska vi beräkna Bézierkurvan för dessa.

Först noterar vi att b0 inte tillför något, ty punkten är origo och därmed

behöver vi inte beräkna B0,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: B1,2(t) = 2! (2 − 1)!1!(1 − t) 2−1t1 ⇔ B1,2(t) = 2t − 2t2. B2,2(t) = 2! (2 − 2)!2!(1 − t)2−2t2⇔ B2,2(t) = t2.

Nu kan vi räkna ut Bézierkurvan:

B(t) = b0B0,2(t) + b1B1,2(t) + b2B2,2(t) = (0, 0) + (1, 1)(2t − 2t2) + (2, 0)t2 ⇐⇒

B(t) = (2t, 2t − 2t2).

Vi ser i följande figur hur grafen för B(t) ser ut:

(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 X i=0 Bi,n(t) = 1, t ∈ [0, 1] 2. Positivitet: Bi,n(t) ≥ 0, ∀t ∈ [0, 1] 3. Symmetri: Bn−i,n(t) = Bi,n(1 − t), för i = 0, 1, . . . , n 4. Rekursivitet:

Bi,n(t) = (1 − t)Bi,n−1+ tBi−1,n−1(t), för i = 0, 1, . . . , n där B−1,n−1(t) = 0 och Bn,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 b0, . . . , bn

upp-fyller följande egenskaper:

1. Ändpunkts-interpolation: B(0) = b0 och B(1) = bn

2. Egenskapen hos ändpunkts-tangenterna:

B0(0) = n(b1− b0) och B0(1) = n(bn− bn−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:

T  n X i=0 biBi,n(t)  = n X i=0 T(bi)Bi,n(t) [5]

För bevis av dessa egenskaper så hänvisar jag till [5].

(38)

Exempel 3.1.2. Givet är Bézierkurvan

B(t) = (2t, 2t − 2t2)

Med kontrollpunkterna b0= (0, 0), b1= (1, 1) och b2= (2, 0).

1. B(0) = (0, 0) = b0, B(1) = (2, 0) = b2. Så egenskapen om

ändpunkts-interpolation håller.

2. B0(t) = (2, 2−4t) ⇒ B0(0) = (2, 2) = 2(b1−b0), B0(1) = (2, −2) = 2(b2− b1)

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.

4. Låt T = 2 0 0 2  . Då blir T(B(t)) =(2t, 2t−2t2) 2 0 0 2  = (4t, 4t−4t2). ⇐⇒ (1, 1)2 00 2(2t − 2t2) + (2, 0) 2 0 0 2  t2= (4t, 4t − 4t2). 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:

B(r)(t) = n−r X i=0 b(r)i Bi,n−r(t) där b(r)i = n(n − 1) · . . . · (n − r + 1) r X j=0 (−1)r−jr j  bi+j [5]

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 exem-pel.

Exempel 3.1.3. Vi önskar att derivera den Bézierkurvan som ges av följande

kontrollpunkter:

b0= (0, 0), b1= (1, 1) och b2= (2, 0).

(39)

3.1. Bézierytor 23 B(1)(t) = 1 X i=0 b(1)i Bi,1(t) Vi beräknar först b(1)i , i= 0, 1 : b(1)0 = 2 · ((1, 1) − (0, 0)) = (2, 2). b(1)1 = 2 · ((2, 0) − (1, 1)) = (2, −2)

Bernsteinpolynomen blir B0,1(t) = (1 − t), B1,1(t) = t, och vi får då derivatan: B0(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 − 2t2) 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äm-par 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.

3.1.2

Bézierytor

Definition 13. En Bézieryta med kontrollpunkterna bi,j(0 ≤ i ≤ n, 0 ≤ j ≤ p)

ges av: S(s, t) = n X i=0 p X j=0 bi,jBi,n(s)Bj,p(t), (s, t) ∈ [0, 1] × [0, 1]

där Bi,n(s) och Bj,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 6. 1. Ändpunkts-Interpolation: S(0, 0) = b0,0, S(1, 0) = bn,0, S(0, 1) = b0,p, S(1, 1) = bn,p.

2. Konvexa höljet: Bézierytan S(s,t) ligger inuti det konvexa höljet som är givet av sina kontrollpunkter.

(40)

3. Invarians under affina avbildningar Låt T vara en affin avbildning i 3 dimensioner, då gäller: T  n X i=0 p X j=0 bi,jBi,n(s)Bj,p(t)  = n X i=0 p X j=0 T(bi,j)Bi,n(s)Bj,p(t) [5]. 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. S(α,β)(s, t) = n−α X i=0 p−β X j=0 b(α,β)i,j Bi,n−α(s)Bj,p−β(t) där b(α,β)i,j = n! (n − α)! p! (p − β)! α X k=0 β X l=0 (−1)k(−1)lα k β l  bi+α−k,j+β−l [5]. Här är α ordningen av derivatan med avseende på variabeln s och β är ord-ningen 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 pro-gram 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 3.1.4. Vi ska beräkna Bézierytan som ges av kontrollpunkterna b0,0= (1, 0, 0), b1,0= (0, 1, 1), b0,1= (1, 1, −1) och b1,1= (0, 0, 0).

och beräkna S1,1(s, t).

Bernsteinpolynomen vi behöver är:

B0,1(s) = 1 − s, B1,1(s) = s.

Vi sätter in värdena i algoritmen:

S(s, t) = b0,0B0,1(s)B0,1(t) + b0,1B0,1(s)B1,1(t) + b1,0B1,1(s)B0,1(t) + b1,1B1,1(s)B1,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

S00st(s, t) = 1−1 X i=0 1−1 X j=0 b1,1i,jBi,1−1(s)Bj,1−1(t) = b(1,1) 0,0 B0,0(s)B0,0(t) = (0, −2, 0),

(41)

3.2. Triangulering av ytor i R3 25

eftersom b(1,1)0,0 = P1k=0P1 l=0(−1)

k+lb

1−k,1−l= b1,1− b0,1− b1,0+ b0,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 kom-mer 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 R3. 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 R2som utgör grunden i min algoritm, för att sedan beskriva algoritmen. Jag avslutar med att

(42)

ge fördelar, nackdelar och förklara varför jag använt mig av denna algoritm.

3.2.1

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 R2ä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 pi, pj och pk∈ 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 pi, pk∈ 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 alter-nativ, 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.

3.2.2

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å punk-terna, 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 R3 27

Grundidén är att på något sätt göra om punktmängden P ⊂ R3 till en punktmängd i R2 istället. Detta för att vi vill kunna använda Delaunay trian-guleringen, då den algoritmen är relativt enkel att implementera och speciellt då den algoritmen redan finns i Matlab. Givet en punktmängd P i R3 så ser algoritmen ut som följande:

Algoritm. triangulering(P)

In: P= N×3 matris där varje rad motsvarar en punkt i R3

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.

(44)

3.2.3

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å sam-ma 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

Ope-rators 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.

3.3.1

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 approxi-mering 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 C0-ytor.

I artikeln väljer de att definiera de geometriska egenskaperna som ett genom-snitt 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 triang-lar, 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 Z Z A κGdA,

(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 → 0.

3.3.2

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 2.2.6 på sidan 17 som ser ut som följande:

Z l(γ) 0 κgds= 2π − n X i=1 βi− Z Z int(γ) κGdAσ, (3.1)

där βiär de yttre vinklarna, κg geodetiska krökningen av kanter i månghör-ningen, κ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 vo-lymsområ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 (“Bary-center 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

(46)

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 xi, med närliggande

punk-ter xj ges av:

AV oronoi=1 8

X

j∈N1(i)

(cot αij+ cot βij)||xi− xj||2

där αij och βij är de motstående hörnen för kanten(xi, xj) och N1(i) är

References

Related documents

EU-kommissionen kommer fram till 2030 att verka för en halverad användning av bekämpningsmedel och reducera utsläppen av näringsämnen, främst kväve och fosfor� Därtill har

Författaren utgår från ett rikt intervjumaterial för att se vad för slags frågor som man ägnar sig åt, vilka glädjeämnen och utmaningar som finns.. I detta väcks

För befolkningen i Valle del Polochic i östra Guatemala kan avtalet leda till ödesdigra konsekvenser i form av tvångsförflyttningar och minskad tillgång till jordbruksmark.

En klart försämrad situation i jämförelse med när jag reste runt i norra Afghanistan i maj 2006 och återkom till Kabul ett par dagar innan upploppen.. När regeringen

Rosario Ali Taikon, från tidningen É Romani Glinda, påpekade att språk kan vara ett problem, att romer lär sig romanes men inte majoritetsspråket.. – Vi kommer

för aLLa dessa kViNNOr gäller att de är döttrar till eller änkor efter framstående manliga politiker och representerar ledan- de familjer.. Familjer som stått i spetsen

Vi har inget medlemsras på så sätt att folk går ur facket, men många går över till andra förbund för att de lämnat industrin och fått jobb i annan sektor, säger han

Syftet med studien är att undersöka hur andra professioner inom hälso- och sjukvård upplever socionomer i de multiprofessionella teamen, samt undersöka vilken status och