Sidefagssupplering. Kapitel 1

Relaterede dokumenter
Geometriske grundbegreber 8. lektion

Kurver og flader i geometri, arkitektur og design 23. lektion

Om første og anden fundamentalform

Obligatorisk Projekt MM512 Kurver og Flader 4. kvartal 2007

STEEN MARKVORSEN DTU COMPUTE 2016

Matematik og Form Splines. NURBS

Besvarelser til Calculus Ordinær eksamen - Forår - 6. Juni 2016

Eksamen maj 2019, Matematik 1, DTU

Eksamen i Calculus. 14. juni f (x, y, z) = 1 + x 2 + y 2. x 2 + y 2 1 Hele rummet uden z aksen

Eksamen maj 2018, Matematik 1, DTU

Matematik, Struktur og Form Splines. NURBS

Maj 2015 (alle opgaver og alle spørgsmål)

Besvarelser til Calculus Ordinær Eksamen - 5. Januar 2018

Reeksamen i Calculus Tirsdag den 20. august 2013

Højere Teknisk Eksamen maj Matematik A. Forberedelsesmateriale til 5 timers skriftlig prøve NY ORDNING. Undervisningsministeriet

STEEN MARKVORSEN DTU COMPUTE 2017

Geometrien af en scroll-kompressor Fra et konkret problem til abstrakt matematik

Eksamen i Calculus. Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet og Det Sundhedsvidenskabelige Fakultet. 6.

Vektorfelter. enote Vektorfelter

Eksamen i Calculus. 14. juni f (x, y, z) = 1 + x 2 + y 2. Hele rummet uden z aksen

Eksamen i Calculus. 14. juni f (x, y, z) = 1 + x 2 + y 2. x 2 + y 2 1 Hele rummet uden z aksen

To find the English version of the exam, please read from the other end! Eksamen i Calculus

OPGAVER 1. Approksimerende polynomier. Håndregning

Kurve- og plan-integraler

Vektorfunktioner. (Parameterkurver) x-klasserne Gammel Hellerup Gymnasium

Lidt om plane kurver og geometrisk kontinuitet

Matematik A STX 18. maj 2017 Vejledende løsning De første 6 opgaver løses uden hjælpemidler

Bevægelsens Geometri

Besvarelser til Calculus Ordinær Eksamen Juni 2018

GEOMETRI-TØ, UGE 12. A σ (R) = A f σ (f(r))

Reeksamen i Calculus

Funktioner af to variable

Parametrisering af en firkant i

OPGAVE 1 Det nedenstående klip er fra et Maple-ark hvor en reel funktion f (x, y) med definitionsmængden (x,y) x 2 + y 2 < 1 } bliver undersøgt:

Arealer som summer Numerisk integration

Besvarelser til Calculus Ordinær eksamen - Efterår - 8. Januar 2016

Ting man gør med Vektorfunktioner

Noter til Computerstøttet Beregning Taylors formel

Besvarelser til Calculus Ordinær Eksamen Juni 2019

Ting man gør med Vektorfunktioner

Gradienter og tangentplaner

Reeksamen i Calculus. Første Studieår ved Det Tekniske Fakultet for IT og Design samt Det Ingeniør- og Naturvidenskabelige Fakultet. 17.

VEKTORGEOMETRI del 2 Skæringer Projektioner Vinkler Afstande

Mere om differentiabilitet

Løsninger til øvelser i kapitel 1

MM502+4 forelæsningsslides. uge 6, 2009

GAUSS-BONNET HANS PLESNER JAKOBSEN

Prøveeksamen i Calculus

Mat 1. 2-timersprøve den 13. maj 2017.

Maj 2013 (alle opgaver og alle spørgsmål)

Vektorfelter langs kurver

Projekt 3.4 Fjerdegradspolynomiets symmetri

Noter om Komplekse Vektorrum, Funktionsrum og Differentialligninger LinAlg 2004/05-Version af 16. Dec.

Besvarelser til Calculus Ordinær Eksamen Juni 2017

Kurver i planen og rummet

Løsninger til eksamensopgaver på A-niveau 2017

Projektopgave 1. Navn: Jonas Pedersen Klasse: 3.4 Skole: Roskilde Tekniske Gymnasium Dato: 5/ Vejleder: Jørn Christian Bendtsen Fag: Matematik

Andengradsligninger i to og tre variable

Vektorfunktioner Parameterfremstillinger Parameterkurver x-klasserne Gammel Hellerup Gymnasium

Matematisk modellering og numeriske metoder. Lektion 13

GEOMETRI-TØ, UGE 11. Opvarmningsopgave 2, [P] (i,ii,iv). Udregn første fundamentalform af følgende flader

To find the English version of the exam, please read from the other end! Eksamen i Calculus

Tilsvarende har vbi i kapitel 3 set, at grafen for tredjegradspolynomiet

Epistel E2 Partiel differentiation

Reeksamen i Calculus

Funktion af flere variable

12.1 Cayley-Hamilton-Sætningen

(c) Opskriv den reelle Fourierrække for funktionen y(t) fra (b), og afgør dernæst om y(t) er en lige eller ulige funktion eller ingen af delene.

Minimalflader og flader med konstant middelkrumning

Projekt 3.1 Fjerdegradspolynomiets symmetri

Uge 6 Store Dag. Opgaver til OPGAVER 1. Opgave 1 Udregning af determinant. Håndregning Der er givet matricen A =

8 Regulære flader i R 3

Taylor s approksimationsformler for funktioner af én variabel

π er irrationel Frank Nasser 10. december 2011

DesignMat Uge 1 Gensyn med forårets stof

Grafværktøjer til GeoMeter Grafværktøjer Hjælp Grafværktøjer.gsp Grafværktøjer

Eksamen i Calculus. Første Studieår ved Det Tekniske Fakultet for IT og Design samt Det Ingeniør- og Naturvidenskabelige Fakultet. 3.

Taylor s approksimationsformler for funktioner af én variabel

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 3

Delmængder af Rummet

Transkript:

Sidefagssupplering Geometrisk Design, Læseplan Kapitel Her læses afsnit til 4, der drejer sig om polynomielle kurver, specielt Bézier kurver. Der skal især lægges vægt på afsnit 4, som giver en fuldstændig gennemgang af teorien, de foregående afsnit kan betragtes som en indledning. Opgaver:....., vink: vis først at... n k D n k C n k. Øvelser: I Maple lader vi et punkt i planen være givet som en liste med to tal, f.eks. p:=[, ] og vi lader et punkt i rummet være givet som en liste med tre tal, f.eks. p:=[,, -]. En Bézier kurve er givet ved sin kontrolpolygon, og i Maple lader vi en kontrolpolygon og dermed en Bézier kurve være givet ved en liste af punkter, f.eks. a := [[,], [,], [,], [,]]. Man skal være opmærksom på at Maple tæller fra, så vi har f.eks. a[] := [,]. I bogen er det første punkt typisk benævnt a. Man kan altså ikke uden videre bruge algoritmerne i bogen men skal omhyggeligt tænke over hvilke index der skal bruges. Følgende Maple kommandoer er bekvemme ved arbejde med lister: > a := [[,], [,], [,], [,]] a VD TT U T U T U T UU > b := [[,], [,], [,], [,4], [,]] antal punkter i listen: b VD TT U T U T U T 4U T UU > nops(a), nops(b) Udpakning af en liste: > op(a) 4 5 T U T U T U T U

Del af en liste ( refererer til sidste element): > b[..-] To lister slås sammen: TT U T U T 4U T UU > [op(a),op(b[..-])] TT U T U T U T U T U T U T 4U T UU Nedenfor bruges en del kommandoer på formen plots[kommando], man kan nøjes med kommando, hvis man har brugt kommandoen with(plots) først. Skriv et Maple -program, der ved hjælp af rekursionsligningen (.) udregner Bernstein polynomierne af en given grad. Der ønskes følgende skelet for proceduren Bernstein: > Bernstein := proc(n) > B:=Bernstein() B VD Tt!. t/ t!. t/ t t!. t/t t! t U Vi kan nu definerer en Bézier kurve ved > a := [[,], [,], [,], [,]]: > r := expand( sum(b[k](t)*a[k], k=..4) ) r VD T4t C t 6t t C tu expand er nødvendig for at få Maple til at gange ind i de kantede parenteser. Vi bruger Maple s plot-kommando til at bestemme kurvens graf og Maple s pointplot-kommando til kontrolpolygonen > curve := plot([r[], r[], t=..], thickness=, color=black): > ctr := plots[pointplot](a, connect=true, thickness=, linestyle=dash): > plots[display]([ctr, curve], scaling=constrained)

.7.6.4.....4.6.8 Skriv et Maple -program, der ved hjælp af de Casteljau s algoritme bestemmer et punkt på en Bézier kurve: > decasteljau := proc(c, t) > a := [[,], [,], [,], [,]]: > b := [[,,], [,,], [,,], [,,], [,,]]: > decasteljau(a, ) T:5 :75U > decasteljau(b, ) T:875 :6875 :5U Vi kan plotte rum-kurven ved at udregne en række punkter på den og bruge Maple -kommandoen pointplotd til både kurven og kontrolpolygonen > rr := [seq(decasteljau(b, i*.5), i=..)]: > curve := plots[pointplotd](rr, connect=true, color=black, thickness=): > ctr := plots[pointplotd](b, connect=true, color=black, thickness=, > linestyle=dash): > plots[display]([ctr, curve], axes=boxed, scaling=constrained).8.6.4....4.4.6.8.8.6

Skriv et Maple -program der differentierer en Bézier kurve: > BezierDiff := proc(c) > a := [[,], [,], [,], [,]]: > da := BezierDiff(a) da VD TT U T U T UU Skriv et Maple -program der øger graden af en Bézier kurve: > DegRaise := proc(c) > a := [[,], [,4], [4,4], [4,]]: > DegRaise(a) TT U T U T 4U T4 U T4 UU. Afleveringsopgave Lav et Maple -worksheet med en implementering af subdivision ved en given parameterværdi. Input er en kontrolpolygon c for en Bézier kurve r og en parameterværdi t. Output er et par af kontrolpolygoner Tc c U for henholdvis r jttu og r jtt U. > subdiv := proc(c, t) > a := [[,], [,4], [4,4], [4,]]: > subdiv(a, /) TT U T U T U T UU TT U T U T4 U T4 UU > subdiv(a, /4) 7 T U T U 4 4 5 9 5 9 7 5 8 4 8 4 4 T4 U T4 U 4 Brug derefter subdivision ved (eller :5) et givet antal gange til at approksimerer en Bézier kurve med den subdividerede kontrolpolygon. 4

> subdiv := proc(c, m) > subdiv(a, ) > a := subdiv(a, ) TT U T 4U T4 4U T4 UU a VD TT U T U T U T U T U T4 U T4 UU > a := subdiv(a, ) a VD T U T U 5 4 7 4 4 7 9 8 4 5 9 8 4 4 5 7 4 4 T4 U T4 U T U > a := subdiv(a, ): > a4 := subdiv(a, 4): > p := plots[pointplot](a, connect=true, thickness=, color=black): > p := plots[pointplot](a, connect=true, thickness=, color=red): > p := plots[pointplot](a, connect=true, thickness=, color=green): > p := plots[pointplot](a, connect=true, thickness=, color=blue): > p4 := plots[pointplot](a4, connect=true, thickness=, color=red): > plots[display]([p, p, p, p, p4], scaling=constrained, axes=none) 5

Kapitel Her læses afsnit til 4, der drejer sig om kurver i planen og rummet. Opgaver:.... Lad r.t/ være en regulær kurve med buelængde s, tangentvektor t og krumningsvektor D dt. Vis, at Gram-Schmidt ortonormalisrings proceduren ds anvendt på vektorerne r og r giver det ortonormale sæt hvor t w jwj w D jr j r.r r /r jr j og jwj D jr j jr j.r r / jr j : Vis dernæst, ved at benytte d ds D dt d ds dt, at D dt ds D d t ds r C r jr j så w D jr j jr j.r r / jr j 4 Vis, at? t, så D w jwj w D Vis at djj dt w, og dermed, at jr j D jwj jr j : D jr j r.r r /r jr j 4 og jj D jr j jr j.r r / jr j 6 () D jr j 4.r r / jr j.r r /.r r / 6jr j jr j.r r / C 6.r r / jr j 8 og at d dt D Tr r r.4/ujr r j Tr r r U.r r /.r r / jr r j 4 6

..5..6.4..4. Øvelser: Bemærk at Maple både har en sum-kommando og en add-kommando, og at sum kan give uventede resultater: > p := [,, ]: > r := t -> sum(binomial(,k)*(-t)^(-k)*t^k*p[k+], k=..): > r := t -> add(binomial(,k)*(-t)^(-k)*t^k*p[k+], k=..): > r(),r(.5),r(),r(),r(.5),r() : : I kommandoen r der bruger sum bliver k sat lig, før k bliver sat til. Skriv et Maple program der ved hjælp af numerisk integration (brug evalf) bestemmer længden af en Bézier kurve. > Bernstein := proc(n) > BezierDiff := proc(c) > BezierLength := proc(c) > a := [[,], [,], [,], [,]]: > BezierLength(a) Skriv et Maple program der for en Bézier kurve af grad n finder :. Længden ` p af kontrolpolygonen.. Afstanden `c mellem endepunkterne. Det vægtede gennemsnit.`c C.n /` p/=.n C /. 7

Sammenlign med resultatet af foregående øvelse og undersøg hvad der sker under gentagen subdivision. > BezierLength := proc(c) > BezierLength(a) T: : :U > subdiv := proc(c, t) > BezierLength := proc(c, n) > local cc > if n= then > return(bezierlength(c)) > else > cc:=subdiv(c,.5) > return(bezierlength(cc[], n-)+bezierlength(cc[], n-)) > fi > BezierLength(a, ) > BezierLength(a, ) > BezierLength(a, ) > BezierLength(a, ) > BezierLength(a, 4) T: : :U T:7678 :877568 :494U T:49794 :9579 :5658U T:6 :9877584 :5976U T:77 :996967 :998U 8

Skriv et Maple program der finder krumningen i et vilkårligt punkt af en plan Bézier kurve. > BezierCurvatured := proc(c, t) > BezierCurvatured(a, ), BezierCurvatured(a,.5) :666666667 :666666667 Skriv et Maple program der ved hjælp af () finder krumningsvektoren i et vilkårligt punkt af en Bézier kurve. > BezierCurvatureVector := proc(c, t) > b := [[,,], [,,], [,,], [,,], [,,]]: > BezierCurvatureVector(b,.5) 4 Skriv et Maple program der ved hjælp af () finder længden af krumningsvektoren i et vilkårligt punkt af en Bézier kurve. > BezierCurvature := proc(c, t) > BezierCurvature(b,.5) :6996 Skriv et Maple program der finder torsionen i et vilkårligt punkt af en Bézier kurve i rummet. > BezierTorsion := proc(c, t) > BezierTorsion(b, ),BezierTorsion(b, /),BezierTorsion(b, ) 9

Skriv et Maple program der bestemmer parameterfremstillingen med tangentdrejning for en kurve med den naturlige ligning ds D %.'/ i det tilfælde hvor %.'/ er et polynomium. > PlaneCurve := proc(p, r, ii) > # p en funktion (et polynomium) > # r startpunktet > # ii parameter intervallet > p := t->(t/pi)^ - (t/pi)^ + : > r := PlaneCurve(p, [,],..*Pi) r VD t!.t 6 t / cos.t / d' C.t 6t t C C / sin.t / C 6 t!.6t t C t / cos.t / C.t 6 t / sin.t / C > plot([op(r),..*pi], scaling=constrained]) C.5.5

Lav et Maple -worksheet der kan. Afleveringsopgave. Plotte krumningen som funktion af buelængden for en vilkårlig Bézier kurve.. Plotte torsionen som funktion af buelængden for en vilkårlig Bézier kurve i rummet. Vi skal altså plotte jj og som funktion af s, dvs. kurverne givet ved.s j.s/j/ og.s.s//. Disse kan også parametriseres som.s.t/ j.t/j/ og.s.t/.t// og det er denne parametrisering vi vil bruge. Hvis vi har en Bézier kurve r.t/ af grad n, så kan vi tilnærme buelængden s.t/ med en kubisk Bézier kurve es der har kontrol punkter s s s s hvor s s D `c C.n /` p n C s s D s./ D jr./j s s D s./ D jr./j bemærk, at s er vilkårlig. Krumningen af r kan vi tilnærme med en kubisk Bézier kurve e der har kontrol punkter hvor D j./j D dj./j D dt dj./j D j./j dt bemærk, at djj D djj. Fuldstændigt tilsvarende kan der findes en kubisk dt jj dt tilnærmelse til torsionen. Først implementeres dette. Vi definerer allerførst et par hjælpe kommandoer (prik- og kryds-produkt) > dot := proc(x,y) > local k > return(add(x[k]*y[k], k=..nops(x))) > cross := proc(x,y) > return(convert(linalg[crossprod](x,y), list)) > a := [[,], [,], [,], [,]]: > b := [[,,], [,,], [,,], [,,], [,,]]: > BezierLength := proc(c, s)

> local s, s, s,... > return([s,s,s,s]) > BezierLength(a, ) BezierLength(b, ) T : : :U T : :659 :96568544U > BezierCurvature := proc(c) > local k, k, k, k,... > return([k,k,k,k]) > BezierCurvature(a) BezierCurvature(b) T:666666666 :555555556 :555555556 :666666666U T:75 : : :75U > BezierTorsion := proc(c) > local t, t, t, t,... > return([t,t,t,t]) > BezierTorsion(b) 4 4 Disse kommandoer kan nu, i lighed med subdiv-kommandoen fra. afleveringsopgave, kombineres med subdivision til at give en god tilnærmelse til kurverne.s.t/ j.t/j/ og.s.t/.t//. > subdiv := proc(c, t) > BezierCurvaturePlot(c, s, n) > p := BezierCurvaturePlot(a,, ): > p := BezierCurvaturePlot(a,, ): > p := BezierCurvaturePlot(a,, ):

> p := BezierCurvaturePlot(a,, ): > p4 := BezierCurvaturePlot(a,, 4): > pp := plots[pointplot](p, connect=true, thickness=, color=black): > pp := plots[pointplot](p, connect=true, thickness=, color=red): > pp := plots[pointplot](p, connect=true, thickness=, color=green): > pp := plots[pointplot](p, connect=true, thickness=, color=blue): > pp4 := plots[pointplot](p4, connect=true, thickness=, color=red): > plots[display]([pp,pp,pp,pp,pp4]).5.5.5 > p := BezierCurvaturePlot(b,, ): > p := BezierCurvaturePlot(b,, ): > p := BezierCurvaturePlot(b,, ): > p := BezierCurvaturePlot(b,, ): > p4 := BezierCurvaturePlot(b,, 4): > pp := plots[pointplot](p, connect=true, thickness=, color=black): > pp := plots[pointplot](p, connect=true, thickness=, color=red): > pp := plots[pointplot](p, connect=true, thickness=, color=green): > pp := plots[pointplot](p, connect=true, thickness=, color=blue): > pp4 := plots[pointplot](p4, connect=true, thickness=, color=red): > plots[display]([pp,pp,pp,pp,pp4]).8.6.4..8.5.5

> BezierTorsionPlot(c, s, n) > p := BezierTorsionPlot(b,, ): > p := BezierTorsionPlot(b,, ): > p := BezierTorsionPlot(b,, ): > p := BezierTorsionPlot(b,, ): > p4 := BezierTorsionPlot(b,, 4): > pp := plots[pointplot](p, connect=true, thickness=, color=black): > pp := plots[pointplot](p, connect=true, thickness=, color=red): > pp := plots[pointplot](p, connect=true, thickness=, color=green): > pp := plots[pointplot](p, connect=true, thickness=, color=blue): > pp4 := plots[pointplot](p4, connect=true, thickness=, color=red): > plots[display]([pp,pp,pp,pp,pp4]).5.5 4

Kapitel Her læses afsnit til, der drejer sig om tensorprodukt Bézier flader. Opgaver:..4..5 Øvelser: Ligesom vi i kapitel og repræsenterede en Bézier kurve ved en liste af punkter, vil vi her repræsenterer en tensorprodukt Bézier flade ved liste af lister af punkter, f.eks. en bi-kubisk flade: > a := [[[,,/], [,,], [,,], [,,-/]], > [[,,], [,,], [,,], [,,]], > [[,,], [,,], [,,], [,,]], > [[,,-/], [,,], [,,], [,,/]]]: > plots[surfdata](a, style=wireframe, color=black, thickness=, > scaling=constrained, axes=boxed).5.5.5.5 Skriv et Maple program der subdividerer en tensor produkt Bézier flade ved en given værdi af den første parameter, og et der subdividerer ved en given værdi af den anden parameter. > subdiv := proc(c, t) > # Fra kapitel > subdivtensor := proc(c, u) > a := subdivtensor(a, /) 5

a D 4 8 T U T U 4 4 4 4 4 8 4 4 8 4 4 8 5 5 5 5 4 4 [ ] [ ] > pa := plots[surfdata](a, style=wireframe, color=black, thickness=, > linestyle=dash): > p := plots[surfdata](a[], style=wireframe, color=red, thickness=): > p := plots[surfdata](a[], style=wireframe, color=green, thickness=): > plots[display]([pa,p,p], scaling=constrained, axes=boxed).5.5.5.5 > subdivtensor := proc(c, v) > a := subdivtensor(a, /) 6

a D [ ] 4 4 8 4 [ ] 4 4 4 8 5 8 4 4 4 4 4 8 5 5 5 4 [ ] [ ] > p := plots[surfdata](a[], style=wireframe, color=red, thickness=): > p := plots[surfdata](a[], style=wireframe, color=green, thickness=): > plots[display]([pa,p,p], scaling=constrained, axes=boxed).5.5.5.5 Skriv et Maple program som subdividerer en tensor produkt flade n gange i den ene retning og m gange i den anden retning. I begge tilfælde subdivideres ved parameterværdien =. > subdiv := proc(c, n) > # Fra kapitel 7

> subdivtensor := proc(c, n, m) > aa := subdivtensor(a,, ): > p := plots[surfdata](aa, style=wireframe, color=green, thickness=): > plots[display]([pa,p], scaling=constrained, axes=boxed).5.5.5.5 > aa := subdivtensor(a,, ): > p := plots[surfdata](aa, style=wireframe, color=green, thickness=): > plots[display]([pa,p], scaling=constrained, axes=boxed).5.5.5.5 > aa := subdivtensor(a,, ): > p := plots[surfdata](aa, style=wireframe, color=green, thickness=): > plots[display]([pa,p], scaling=constrained, axes=boxed) 8

.5.5.5.5 > aa := subdivtensor(a,, ): > p := plots[surfdata](aa, style=wireframe, color=green, thickness=): > plots[display]([pa,p], scaling=constrained, axes=boxed).5.5.5.5 > p := plots[surfdata](aa, style=patchnogrid): > plots[display]([p,pa], scaling=constrained, axes=boxed).5.5.5.5 9

Skriv to Maple programmer der bestemmer de to partielle afledede af en tensorprodukt Bézier flade. > BezierDiff := proc(c) > # Fra kapitel > TensorBezierDiff := proc(c) > TensorBezierDiff(a) T U T U TT U T U T U T U T U T UU > TensorBezierDiff := proc(c) > TensorBezierDiff(a) T U TT U T U T UU TT U T U T UU T U

Skriv to Maple programmer der hæver graden af en tensorprodukt Bézier flade i hver af de to parametre. > DegRaise := proc(c) > # Fra kapitel > TensorDegRaise := proc(c) > da := TensorBezierDiff(a): > TensorDegRaise(da) T U T U T U T U > TensorDegRaise := proc(c) > da := TensorBezierDiff(a): > TensorDegRaise(da) T U T U T U T U TT U T U T U T UU TT U T U T U T UU

Kapitel 4 Her læses alle afsnit. Opgaver: 4..8, 4..9 og 4..6 4.., 4..4 og 4..6 4.4., 4.4. og 4.4.5 Øvelser: > a := [[[,,/], [,,], [,,], [,,-/]], > [[,,], [,,], [,,], [,,]], > [[,,], [,,], [,,], [,,]], > [[,,-/], [,,], [,,], [,,/]]]: > dot := proc(x,y) > local k > return(add(x[k]*y[k], k=..nops(x))) > cross := proc(x,y) > return(convert(linalg[crossprod](x,y), list)) Skriv et Maple -program der udregner en approximation til normalvektorfeltet på en tensorprodukt Bézier flade. Opfat, efter subdivision, kontrolnettet for de partielle afledede som en approximation til de partielle afledede og benyt disse værdier til at udregne en approximation til normalvekterfeltet. > subdivtensor := proc(c, n, m) > # Fra kapitel > TensorBezierDiff := proc(c) > # Fra kapitel > TensorBezierDiff := proc(c) > # Fra kapitel > TensorDegRaise := proc(c) > # Fra kapitel

> TensorDegRaise := proc(c) > # Fra kapitel > > TensorNormal := proc(c, n, m) > TensorNormal(a,, ) TTT :484894 :484894 :8649658U T :7447 :74688 :74688U T :7447 :74688 :74688U T :484894 :484894 :8649658UU TT:74688 :7447 :74688U T:5445 :5445 :94545U T :5445 :5445 :94545U T :74688 :7447 :74688UU TT:74688 :7447 :74688U T:5445 :5445 :94545U T :5445 :5445 :94545U T :74688 :7447 :74688UU TT:484894 :484894 :8649658U T:7447 :74688 :74688U T:7447 :74688 :74688U T:484894 :484894 :8649658UUU > aa := subdivtensor(a,, ): > p := plots[surfdata](aa, style=wireframe, color=green): > N := TensorNormal(a,, ): > eps:=-.5: # skalering af normalvektor > Np := > plots[display](seq(seq(plottools[arrow]( > aa[i,j],aa[i,j]+eps*n[i,j],.,.,., cylindrical_arrow), > i=..nops(aa)), j=..nops(aa[])), color=black): > plots[display](p, Np, axes=boxed, scaling=constrained)

.5.5.5.5 Skriv et Maple -program der udregner en approximation til første fundamentalform (E, F og G) på en tensorprodukt Bézier flade. Opfat, efter subdivision, kontrolnettet for de partielle afledede som en approximation til de partielle afledede og benyt disse værdier til at udregne en approximation til første fundamentalform. > TensorEFG := proc(c, n, m) > TensorEFG(a,, ) 45 7 7 9 45 4 4 4 4 8 4 8 45 9 45 4 4 4 7 7 45 9 45 8 8 4 4 4 4 4 7 T U T U 4 8 7 T U T U 4 8 7 7 45 9 45 8 8 4 4 4 4 4 Skriv et Maple -program der udregner en approximation til anden fundamentalform (L, M og N) på en tensorprodukt Bézier flade. Opfat, efter subdivision, kontrolnettet for de partielle afledede som en approximation til de partielle afledede og benyt disse værdier til at udregne en approximation til anden fundamentalform. > TensorLMN := proc(c, n, m) > TensorLMN(a,, ) 4

TTT :449489744 :785 :449489744U T4:4899 :6974 :74688U T4:4899 :575 :74688U T:449489744 :674465 :449489744UU TT :74688 :6974 4:4899U T5:474 :5685 5:474U T5:474 :456768 5:474U T:74688 :575 4:4899UU TT:74688 :575 4:4899U T5:474 :456768 5:474U T5:474 :5685 5:474U T :74688 :6974 4:4899UU TT:449489744 :674465 :449489744U T4:4899 :575 :74688U T4:4899 :6974 :74688U T :449489744 :785 :449489744UUU Skriv et Maple -program der udregner en approximation til Gauss krumningen (K ) på en tensorprodukt Bézier flade. Opfat, efter subdivision, kontrolnettet for de partielle afledede som en approximation til de partielle afledede og benyt disse værdier til at udregne en approximation til Gauss krumningen. > TensorGaussKrumning := proc(c, n, m) > TensorGaussKrumning(a,, ) TT :9567856 :788464 :59485 :678959U T :788464 :7895697 :954545454 :59485U T:59485 :954545454 :7895697 :788464U T :678959 :59485 :788464 :9567856UU Skriv et Maple -program der udregner en approximation til Middel krumningen (H) på en tensorprodukt Bézier flade. Opfat, efter subdivision, kon- 5

trolnettet for de partielle afledede som en approximation til de partielle afledede og benyt disse værdier til at udregne en approximation til Middel krumningen. > TensorMiddelKrumning := proc(c, n, m) > TensorMiddelKrumning(a,, ) TT :68468 :9657698 :5684 :5694948U T:9657698 :59674 Hvis vi har givet to n m matricer, p bestående af punkter og c bestående af tal, så plotter følgende Maple -funktion, MyPlot(a, c) punkt-matricen som en flade farvelagt efter tal-matricen, hvor det mindste tal svarer til rød og det største tal svarer til violet. Hvis man angiver to extra tal c og c MyPlot(a, c, c, c) hvor alle tal i c ligger i intervallet Tc c U så kommer c til at svare til rød og c til at scare til violet. > MyPlot := proc(xyz, cc, minc, maxc) > local c, c, c > > c := map(op,cc) > if nargs> then c:=minc else c:=min(op(c)) fi > if nargs> then c:=maxc else c:=max(op(c)) fi > c := map(x->(x-c)*.9/(c-c),c) > PLOTD( MESH(xyz, COLOR(HUE,op(c))), > AXESSTYLE(FRAME), SCALING(CONSTRAINED)) > aa := subdivtensor(a,, ): > K := TensorGaussKrumning(a,, ) > H := TensorMiddelKrumning(a,, ) > HK := op(map(op,k)),op(map(op,h)) > c := min(hk) > c := max(hk) > MyPlot(aa, K, c, c) c VD :88455 c VD :475 6

.5.5.5.5 > MyPlot(aa, H, c, c).5.5.5. Afleveringsopgave.5 Betragt en kurve i xz-planen givet ved en parameterfremstilling I! R V u 7! r.u/ z.u/ med r.u/ > for alle u I. Hvis kurven roteres om z-aksen, får vi en omdrejningsflade. Den kan parametrisers som r.u v/ D r.u/ cos v r.u/ sin v z.u/ Antag nu at kurven r.u/ z.u/ er reulær og injektiv.. Vis at ( ) er et kort hvis v Uv vt med v v <.. Vis at M D r.u v/ u I v R er en regulær flade.. Find enheds normalvektorfeltet til fladen. 4. Bestem første fundamentalform for fladen. 5. Bestem anden fundamentalform for fladen. 6. Bestem Gauss og middel krumningen for fladen. 7. Bestem de principale krumninger og de principale retninger for fladen. ( ) 7