Kurvor och ytor. Gustav Taxén

Relevanta dokument
Parametriska kurvor: Parametriska ytor

3D: transformationer:

TANA09 Föreläsning 8. Kubiska splines. B-Splines. Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

Approximerande Splines. B-splines. Minsta kvadrat anpassning. Design av kurvor och ytor.

Interpolation Modellfunktioner som satisfierar givna punkter

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).

OH till Föreläsning 5, Numme K2, Läsa mellan raderna. Allmän polynom-interpolation, S Ch 3.1.0

LAB 3. INTERPOLATION. 1 Inledning. 2 Interpolation med polynom. 3 Splineinterpolation. 1.1 Innehåll. 3.1 Problembeskrivning

Rapportexempel, Datorer och datoranvändning

Föreläsning 5. Approximationsteori

6 Derivata och grafer

Polynomanpassning i MATLAB

TANA17 Matematiska beräkningar med Matlab

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A. t 2

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

Del I: Lösningsförslag till Numerisk analys,

Kurvanpassning. Kurvanpassning jfr lab. Kurvanpassning jfr lab

OH till Föreläsning 5, Numme K2, GNM Kap 4-4.4A / GKN Kap 4.1A,(D),E Interpolation. Läsa mellan raderna. Allmän polynom-interpolation

Numerisk Analys, MMG410. Lecture 12. 1/24

Dagens tema är exponentialfunktioner. Egentligen inga nyheter, snarare repetition. Vi vet att alla exponentialfunktioner.

Omtentamen. TNM077 3D-datorgrafik och animering kl 8-12 Inga hjälpmedel. (samt även TNM008 3D-datorgrafik och VR)

Linjärisering, Jacobimatris och Newtons metod.

Interpolation. 8 december 2014 Sida 1 / 20

Modellering. Gustav Taxén

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.

5 Om f (r) = 0 kan andraderivatan inte avgöra vilken typ av extrempunkt det handlar om. Återstår att avgöra punktens typ med teckenstudium.

5B1146 med Matlab. Laborationsr. Laborationsgrupp: Sebastian Johnson Erik Lundberg, Ann-Sofi Åhn ( endst tal1-3

Repetition, Matematik 2 för lärare. Ï x + 2y - 3z = 1 Ô Ì 3x - y + 2z = a Ô Á. . Beräkna ABT. Beräkna (AB) T

Sammanfattning (Nummedelen)

3.6 De klassiska polynomens ortogonalitetsegenskaper.

Sidor i boken f(x) = a x 2 +b x+c

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

f(x) = x 2 g(x) = x3 100 h(x) = x 4 x x 2 x 3 100

2 Funktioner från R n till R m, linjära, inversa och implicita funktioner

Uppgifter, 2014 Tillämpad linjär algebra

MA2001 Envariabelanalys

Numerisk Analys, MMG410. Lecture 13. 1/58

Gamla tentemensuppgifter

2D-grafik. Gustav Taxén

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

där x < ξ < 0. Eftersom ξ < 0 är högerledet alltid mindre än Lektion 4, Envariabelanalys den 30 september 1999 r(1 + 0) r 1 = r.

SF1626 Flervariabelanalys

Datorövning 2 med Maple

TANA19 NUMERISKA METODER

x ( f u 2y + f v 2x) xy = 24 och C = f

23 Konservativa fält i R 3 och rotation

1. Vi skriver upp ekvationssystemet i matrisform och gausseliminerar tills vi når trappstegsform,

f(x) = x 2 g(x) = x3 100

Lösningar och kommentarer till uppgifter i 3.1

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Lösningar till tentamen i Matematik II, 5B1116, 5B1136 för Bio. E,I,K,ME, Media och OPEN, tisdagen den 13 april 2004.

Dagens teman. Linjära ODE-system av ordning 1:

Datorövning 2 med Maple, vt

Uppsala Universitet Matematiska Institutionen Bo Styf. Lösningar till kryssproblemen 1-5. Uppgifter till lektion 1: = 10 x. = x 10.

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

MAA7 Derivatan. 2. Funktionens egenskaper. 2.1 Repetition av grundbegerepp

Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.

. (2p) 2x + 2y + z = 4 y + 2z = 2 4x + 3y = 6

SF1624 Algebra och geometri

Splinebilen och andra rymdytor

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Lektion 1. Kurvor i planet och i rummet

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

6. Räkna ut integralen. z dx dy dz,

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 26 november 2015 Sida 1 / 28

Tentamen: Numerisk Analys MMG410, GU

Viktiga begrepp, satser och typiska problem i kursen MVE460, 2015.

Lösandet av ekvationer utgör ett centralt område inom matematiken, kanske främst den tillämpade.

Dagens ämnen. Linjära ekvationssystem: Successiv elimination Vektorer Definitionen Grundläggande räkneoperationer Bas och koordinater Ortsvektorer

Differentialens geometriska betydelse

Uppgifter, 2015 Tillämpad linjär algebra

Fler uppgifter på andragradsfunktioner

. b. x + 2 y 3 z = 1 3 x y + 2 z = a x 5 y + 8 z = 1 lösning?

Kappa 1. Robin Kastberg. 10 oktober 2014

Modul 1: Komplexa tal och Polynomekvationer

LMA515 Matematik, del B Sammanställning av lärmål

SF1625 Envariabelanalys Lösningsförslag till tentamen DEL A. e 50k = k = ln 1 2. k = ln = ln 2

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

Numeriska metoder, grundkurs II. Dagens program. Exempel Kubiska splines. Ögna igenom de gamla övningsanteckningarna.

x f x + y f y x. 2 Funktionen f(x, y) uppfyller alltså given differentialekvation.

u(x) + xv(x) = 0 2u(x) + 3xv(x) = sin(x) xxx egentliga uppgifter xxx 1. Sök alla lösningar till den homogena differentialekvationen

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

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

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

0.31 = f(x 2 ) = b 1 + b 2 (x 3 x 1 ) + b 3 (x 3 x 1 )(x 3 x 2 ) = ( ) + b 3 ( )(

ANDRAGRADSKURVOR Vi betraktar ekvationen

Beräkning av integraler

DN1212/numpm Numeriska metoder och grundläggande programmering Laboration 1 Introduktion

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A. 1. En svängningsrörelse beskrivs av

Matematiska uppgifter

Tentamen TNM077, 3D datorgrafik och animering

ÖVN 11 & 12 DEL A - DIFFTRANS - DEL2 - SF Nyckelord och innehåll. Inofficiella mål

6.3. Direkta sökmetoder

Tentamen i Teknisk-Vetenskapliga Beräkningar

Läsanvisningar till: R.A. Adams, Calculus, a Complete Course, 4th ed.

Preliminärt lösningsförslag

ÖVN 6 - DIFFERENTIALEKVATIONER OCH TRANSFORMMETODER - SF Nyckelord och innehåll. a n (x x 0 ) n.

Rationella punkter på algebraiska kurvor

Laboration 1: Optimalt sparande

Transkript:

Kurvor och ytor Gustav Taxén gustavt@csc.kth.se 2D1640 Grafik och Interaktionsprogrammering VT 2007

Kurvor och ytor Explicit form Implicit form Parametrisk form Procedurbaserade Polynom Catmull-Clark Kubiska (grad 3) Generella (grad d) Interpolerande Hermite Bezier B-Spline Generell B-Spline Uniform NURBS

Representation av kurvor Explicit Generellt y = f(x) Exempel y = x 1 y Implicit f(x, y) = 0 x - y = 0 Parametrisk x = f x (u) y = f y (u) u min u u max x = u y = u 0 u 1 0 0 1 x

Parametriska kurvor Om vi deriverar uttrycket för kurvan p(u) = f x (u) f y (u) får vi en vektor som definierar kurvans tangent: dp(u) du = df x (u) du df y (u) du

Exempel p(u) = u u 2 0 u 1 dp(u) du = 1 2u I u = 0.5 får vi tangenten 1 1

Exempel

Parametriska ytor För ytor krävs två parametrar: u y p(u,v) = f x (u,v) f y (u,v) f z (u,v) z v x

Parametriska ytor De vektorer vi får om vi deriverar m.a.p. u och v definierar ytans tangentplan: p(u,v) u = f x (u,v) u f y (u,v) u f z (u,v) u p(u,v) v = f x (u,v) v f y (u,v) v f z (u,v) v N(u,v) = p(u,v) u p(u,v) v är ytans normal.

Exempel

Parametriska polynomkurvor Då p(u) är ett polynom i u kallas kurvan polynomkurva. p(u) = f x (u) f y (u) f z (u) = c x0 + uc x1 + u 2 c x2 +... + u n c xn c y0 + uc y1 + u 2 c y2 +... + u n c yn c z0 + uc z1 + u 2 c z2 +... + u n c zn 0 u 1 Polynomkurvor, visar det sig, har egenskaper som är intressanta för datorgrafik och CAD/CAM.

Interpolerande polynomkurvor Antag att vi har fyra styrpunkter p 0, p 1, p 2 och p 3 och att vi vill att kurvan ska gå genom dessa punkter. p 0 p 2 p 3 p 1 p 0 = (p 0x p 0y p 0z ) T, p 1 = (p 1x p 1y p 1z ) T, p 2 = (p 2x p 2y p 2z ) T, p 3 = (p 3x p 3y p 3z ) T Vi samlar koordinaterna i tre vektorer: p x = p 0x p 1x p 2x p 3x p y = p 0y p 1y p 2y p 3y p z = p 0z p 1z p 2z p 3z

Interpolerande polynomkurvor Vi bestämmer att kurvan ska gå genom styrpunkterna vid u = 0, u = 1/3, u = 2/3 och u = 1. u = 0 p 2 p 0 p 3 p 1 u = 1 u = 1/3 u = 2/3 Vilka polynomkoefficienter ska vi ha?

Interpolerande polynomkurvor Låt oss börja med x-komponenten. Vi hade att f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 och vi vill ha f x (0) = p 0x f x (1/3) = p 1x f x (2/3) = p 2x f x (1) = p 3x u = 0: u = 1: u = 1/3: u = 2/3: p 0x = c x0 p 3x = c x0 + c x1 + c x2 + c x3 p 1x = c x0 + (1/3)c x1 + (1/3) 2 c x2 + (1/3) 3 c x3 p 2x = c x0 + (2/3)c x1 + (2/3) 2 c x2 + (2/3) 3 c x3

Interpolerande polynomkurvor Löser man ekvationssystemet får man c 0x = p 0x c 1x = 5.5p 0x + 9p 1x 4.5p 2x + p 3x c 2x = 9p 0x 22.5p 1x + 18p 2x 4.5p 3x c 3x = 4.5p 0x + 13.5p 1x 13.5p 2x + 4.5p 3x y- och z-komponenterna får samma värden. Kurvan som har dessa c-koefficienter sägs interpolera de fyra styrpunkterna.

Exempel y p 0 = (0 0) T p 1 = (1 0) T p 2 = (1 1) T p 3 = (0 1) T 1 0 p 3 p 2 p 0 p 1 0 1 x

Exempel f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 p 0 = (0 0) T p 1 = (1 0) T p 2 = (1 1) T p 3 = (0 1) T c 0x = p 0x c 1x = 5.5p 0x + 9p 1x 4.5p 2x + p 3x c 2x = 9p 0x 22.5p 1x + 18p 2x 4.5p 3x c 3x = 4.5p 0x + 13.5p 1x 13.5p 2x + 4.5p 3x c 0x = 0 c 1x = 5.5 0 + 9 1 4.5 1 + 0 = 4.5 c 2x = 9 0 22.5 1 + 18 1 4.5 0 = 4.5 c 3x = 4.5 0 + 13.5 1 13.5 1 + 4.5 0 = 0

Exempel f y (u) = c y0 + uc y1 + u 2 c y2 + u 3 c y3 p 0 = (0 0) T p 1 = (1 0) T p 2 = (1 1) T p 3 = (0 1) T c 0y = p 0y c 1y = 5.5p 0y + 9p 1y 4.5p 2y + p 3y c 2y = 9p 0y 22.5p 1y + 18p 2y 4.5p 3y c 3y = 4.5p 0y + 13.5p 1y 13.5p 2y + 4.5p 3y c 0y = 0 c 1y = 5.5 0 + 9 0 4.5 1 + 1 = 3.5 c 2y = 9 0 22.5 0 + 18 1 4.5 1 = 13.5 c 3y = 4.5 0 + 13.5 0 13.5 1 + 4.5 1 = 9

Exempel f x (u) = 0 + 4.5u 4.5u 2 + 0 u 3 f y (u) = 0 3.5u + 13.5u 2 9u 3

Exempel

Blandningspolynom Funktion b(u) som visar hur varje styrpunkt bidrar till kurvan när u sveps från 0 till 1. Exempel: En kurva som interpolerar två styrpunkter: f x (u) = (1 u)p 0x + up 1x f y (u) = (1 u)p 0y + up 1y P 0 b 0 (u) = 1 u b 1 (u) = u P 1

Blandningspolynom Blandningspolynom för en interpolerande kurva.

En parametrisk kubisk polynomkurva är en kurva på formen p(u) = b 0 (u)p 0 + b 1 (u)p 1 + b 2 (u)p 2 + b 3 (u)p 3 där p i är kurvans styrpunkter och b i (u) är kurvans blandningspolynom.

Utritning av parametriska kurvor draw2dcurve(float px[4], float py[4], float step) { float u; float oldx, oldy; for (u = 0.0f; u <= 1.0f; u += step) { float c0x = px[0]; float c0y = py[0]; float c1x = 5.5 * px[0] + 9 * px[1] 4.5 * px[2] + px[3];... float u2 = u * u; float u3 = u * u2; float x = c0x + c1x * u + c2x * u2 + c3x * u3; float y = c0y + c1y * u + c2y * u2 + c3y * u3; drawline(oldx, oldy, x, y); oldx = x; oldy = y; } } (Egentligen måste man initiera oldx och oldy också.)

Kubiska polynomytor p(u,v) = f x (u, v) f y (u, v) = f z (u, v) 3 i = 0 3 j = 0 c xij c yij c zij u i v j 0 u 1 0 v 1

Exempel

Interpolerande polynomytor Kräver 16 styrpunkter: u p 10 p 20 p 30 v p 00 p 33 p 01 p 02 p 03 p 13 p 23

Interpolerande polynomytor Om vi sätter v = 0 får vi en kurva som ska interpolera punkterna p 00, p 10, p 20 och p 30. u p 10 p 20 p 30 v = 0 v p 00 p 33 p 01 p 02 p 03 p 13 p 23

Interpolerande polynomytor Sätter vi v = 1 får vi en kurva som måste interpolera punkterna p 03, p 13, p 23 och p 33. u p 10 p 20 p 30 v = 1 v p 00 p 33 p 01 p 02 p 03 p 13 p 23

Interpolerande polynomytor Lägger man till v = 1/3 och v = 2/3 får man ett linjärt ekvationssytem. När man löser detta (se boken) får man Koefficienterna för polynomen.

Interpolerande polynomytor

Sammanlänkning nkning av kurvor Icke-kontinuerlig C 0 -kontinuerlig C 1 -kontinuerlig

Hermitekurvor Fås om man kräver C 1 -kontinuitet. Kurvans ekvation är (i 2D) f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 f y (u) = c y0 + uc y1 + u 2 c y2 + u 3 c y3 Vi behåller första och sista styrpunkten: p 0 = (p 0x p 3 = (p 3x p 0y ) T p 3y ) T

Hermitekurvor Sedan väljer vi tangenten i p 0 och p 3 explicit, d.v.s. df(u=0) du df x (u) du = p 0x df y (u) du u = 0 u = 0 p 0y df(u=1) du df x (u) du = p 3x df y (u) du u = 1 u = 1 p 3y

Hermitekurvor För x-komponenten är kurvans ekvation f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 och dess derivata är f x (u) = c x1 + 2uc x2 + 3u 2 c x3 så p 0x = f x (0) = c x0 p 3x = f x (1) = c x0 + c x1 + c x2 + c x3 p 0x = f x (0) = c x1 p 3x = f x (1) = c x1 + 2c x2 + 3c x3

Hermitekurvor Löser vi ekvationssystemet får vi f x (u) = 1 u u 2 u 3 1 0 0 0 0 0 1 0 3 3 2 1 2 2 1 1 p 0x p 1x p 0x p 1x y- och z-komponenterna blir samma.

Sammanlänkning nkning av kurvor Vi kan få C 1 -kontinuitet genom att sätta samman två Hermitekurvor där tangenten är densamma i P 3 för första kurvan och P 0 för andra kurvan: P 3 P 0 P 3 P 0

Exempel

Beziérkurvor Samma som Hermite men specificeras lite annorlunda. Derivatorna sätts till p 1 p 2 dp 0 du = 3(p 1 p 0 ) dp 3 du = 3(p 3 p 2 ) p 0 p 3 För att kurvan ska ritas med linjär hastighet m.a.p. u. (Inte uppenbart, men kan visas.)

Beziérkurvor f x (u) = c x0 + uc x1 + u 2 c x2 + u 3 c x3 f x (u) = c x1 + 2uc x2 + 3u 2 c x3 p 0x = c x0 p 1x = c x0 + c x1 + c x2 + c x3 3(p 1x p 0x ) = f x (0) = c x1 3(p 3x p 2x ) = f x (1) = c x1 + 2c x2 + 3c x3

Beziérkurvor Lösningen blir f x (u) = 1 u u 2 u 3 1 4 1 0 3 0 3 0 3 6 3 0 1 3 3 1 p 0x p 1x p 2x p 3x

Beziérkurvor

Beziérytor På motsvarande sätt som för interpolerande ytor (se boken).

Kubiska B-splinekurvorB Nackdelen med Hermitekurvor är att C 1 -kontinuitet inte alltid räcker. Det kan lösas genom att man släpper kravet att kurvan ska interpolera slutpunkterna på kurvan. p i-1 p i p i-3 p i-2

Kubiska B-splinekurvorB Nackdelen med Hermitekurvor är att C 1 -kontinuitet inte alltid räcker. Det kan lösas genom att man släpper kravet att kurvan ska interpolera slutpunkterna på kurvan. p i-1 p i p i+1 p i-2

Kubiska B-splinekurvorB Nackdelen med Hermitekurvor är att C 1 -kontinuitet inte alltid räcker. Det kan lösas genom att man släpper kravet att kurvan ska interpolera slutpunkterna på kurvan. p i-1 p i p i+1 p i+2 Se boken för härledning.

Exempel

Generaliserade B-splinekurvorB Vi kan generalisera B-splinekurvsbegreppet. Vi kan konstruera en funktion p(u) = f x (u) f y (u) f z (u) över intervallen u 0 u 1 u 2... u n-1 u n Värdena u 0, u 1,..., u n kallas knutar.

Generaliserade B-splinekurvorB Den generaliserade B-splinekurvans ekvation är n p(u) = i = 0 B id (u) p i där B id (u) är en basfunktion, i det här fallet ett polynom av grad d (och p i är styrpunkterna) Väljer man B i3 (u) som blandningspolynom för en kubisk B-spline (se boken) och knutarna {0, 0, 0, 0, 1, 1, 1, 1} får man en Beziérkurva.

NURBS NURBS = Non-Uniform Rational B-Spline Variant av generaliserad B-Spline där man viktar de olika styrpunkterna. p(u) = i = 0 B id (u)w i p i Anledningen är att man vill ge användaren explicit kontroll över hur mycket av varje styrpunkt som ska tas med. En annan fördel är att en affin transformation av en NURBS är ekvivalent med samma transformation av styrpunkterna.

NURBS v u

NURBS

NURBS v u

Catmull-Clark Clark-ytor Om man använder kombinationer av polynomytor kan det vara svårt att undvika sprickor på ställen där ytorna möts. Pixar

Catmull-Clark Clark-ytor

Catmull-Clark Clark-ytor F F F F Face points medelvärdet av hörnen som definierar polygonerna

Catmull-Clark Clark-ytor E Edge points medelvärdet av hörnen som definierar en kant och de två nya face points som hör till polygonerna som hör till kanten

Catmull-Clark Clark-ytor E E E E Edge points medelvärdet av hörnen som definierar en kant och de två nya face points som hör till polygonerna som hör till kanten

Catmull-Clark Clark-ytor V Vertex point den punkt som är gemensam för polygonerna. V = (Q + ((n-3)/n)s + 2R) / 3 Q = medelvärdet av alla nya face points S = den ursprungliga vertex point R = medelvärdet av mittpunkten för de kanter som hör till S

Catmull-Clark Clark-ytor E F E Bind samman face points med de edge points som hör till den polygonen

Catmull-Clark Clark-ytor Bind samman face points med de edge points som hör till den polygonen

Catmull-Clark Clark-ytor Bind samman vertex point med edge points

Catmull-Clark Clark-ytor En iteration klar!

Catmull-Clark Clark-ytor

Catmull-Clark Clark-ytor Subdivision for Modeling and Animation SIGGRAPH 2000 Course Notes

Subdivision schemes Subdivision for Modeling and Animation SIGGRAPH 2000 Course Notes

Subdivision schemes Subdivision for Modeling and Animation SIGGRAPH 2000 Course Notes

Subdivision schemes Detta är en av anledningarna till varför man eftersträvar fyrsidiga polygoner i Maya. Subdivision for Modeling and Animation SIGGRAPH 2000 Course Notes

Adaptive subdivision schemes Subdivision for Modeling and Animation SIGGRAPH 2000 Course Notes

Catmull-Clark Clark-ytor: Exempel

Pixar

www.designpicture.com

Jim Kalogiratos