ramar, matriser, kvaternioner perspektiv...x y z rotation i 3d man kan visa att vilken orientering...
TRANSCRIPT
![Page 1: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/1.jpg)
3D: transformationer: ramar, matriser, kvaternioner
perspektiv: ortografisk, perspektiv
kurvor, ytor: parametriska, kubiska -
interpolerande, Bézier, spline Inlämningsuppgift 3
Yngve Sundblad [email protected] DH2640 Grafik och Interaktionsprogrammering VT 2009
![Page 2: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/2.jpg)
Kursmaterial • 3D-transformationer:
Kursboken (Angel) kap.4 • Kurvor och ytor:
Kursboken (Angel) kap.12 (5.ed), kap.11 (4.ed) • Projektioner:
Kursboken (Angel), kap.5 Ingrid Carlbom & Joseph Paciorek: Planar Geometric Projections and Viewing Transformations, Computing Surveys 10(4), Dec 1978, pp.465-492 (hela -502) (i kursbunten)
![Page 3: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/3.jpg)
Matematiska byggstenar
• Skalär (storhet) u • Punkt (position) P • Vektor (längd och riktning) v • Transformationsmatris (4x4) M • Kvaternion (3D-rotation) q
![Page 4: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/4.jpg)
Skalär- och kryssprodukt
u
v
|v|
u ⋅ v θ u ⋅ v = (uxvx+ uyvy,+uzvz) = |u||v| cos θ Skalärprodukten är 0 omm faktorerna är ortogonala (vinkelräta)
u × v = (uyvz – uzvy, uzvx – uxvz, uxvy – uyvx) Kryssprodukten (en vektor) är ortogonal mot bägge faktorerna
u
v
u × v
Två av de vanligaste vektoroperationerna i datorgrafik
![Page 5: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/5.jpg)
Basvektorer
Givet 3 st 3-dimensionella basvektorer v1, v2, v3 som alla är vinkelräta mot varandra kan vi skriva vektorn w som
v1
v2
v3
w α1v1
α3v3
α2v2
α1v1 + α2v2 w = + α3v3 = aT v1 v2 v3
där
aT = α1 α2 α3
![Page 6: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/6.jpg)
Ramar (frames) Vi definierar en ram som (v1, v2, v3, P0 )
där P0 kallas ramens origo. För punkter i denna ram gäller:
v1
v2
v3
P η1v1
η3v3
η2v2
P0
+ η1v1 P = P0 + η2v2 + η3v3 = pT
där
pT = η1 η2 η3 1
v1 v2 v3 P0
(4D homogena koordinater, jfr 3D homogena för punkter i planet)
![Page 7: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/7.jpg)
Ramar (frames) En riktningsvektor w i denna ram skrivs
v1 v2 v3 P0
w = aT
där
aT = α1 α2 α3 0
Riktningsvektorer definieras alltså oberoende av origo.
![Page 8: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/8.jpg)
Byte av ram Givet två ramar (v1, v2, v3, P0) och
(u1, u2, u3, Q0), kan vi skriva
Q0 = γ41v1 + γ42v2 + γ43v3 + P0
v1
v2
v3
u1 γ11v1
γ13v3
γ12v2
γ11v1 u1 = + γ12v2 + γ13v3 u2 = γ21v1 + γ22v2 + γ23v3
u3 = γ31v1 + γ32v2 + γ33v3
u1 u2 u3 Q0
=
γ11 γ12 γ13 0 γ21 γ22 γ23 0 γ31 γ32 γ33 0 γ41 γ42 γ43 1
v1 v2 v3 P0
M
Matrisform:
![Page 9: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/9.jpg)
Punkter och rambyte Ta nu en punkt P och definiera den i två olika ramar:
P =
u1 u2 u3 Q0
β1 β2 β3 1 = aT
v1 v2 v3 P0
= bTM
v1 v2 v3 P0
(föregående bild)
= α1 α2 α3 1
v1 v2 v3 P0
(enl. ovan)
P = α1v1 + α2v2 + α3v3 + P0
P = β1u1 + β2u2 + β3u3 + Q0
i den första ramen
i den andra
Hur är α- och β-värdena relaterade?
![Page 10: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/10.jpg)
Punkter och rambyte
bTM = aT
= aT bTM
v1 v2 v3 P0
v1 v2 v3 P0
⇔
och omvänt:
b = (MT)-1a
a = MTb ⇔
D.v.s. P's koordinater i ram 2 fås om man multiplicerar koordinaterna för ram 1 med (MT)-1.
![Page 11: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/11.jpg)
Exempel Antag att vi har två ramar
(v1, v2, v3, P0) och (u1, u2, u3, Q0) och att ramarna är relaterade till varandra enligt följande:
u1 = (3v1 + 4v2 )/5 u2 = (4v1 - 3v2 )/5 u3 = v3 Q0 = P0 + 0.5v3
M =
0.6 0.8 0 0 0.8 -0.6 0 0 0 0 1 0 0 0 0.5 1
(MT)-1 = 0.6 0.8 0 0 0.8 -0.6 0 0 0 0 1 -0.5 0 0 0 1
P0
v3
v1
v2
Q0
u3
u1
u2
MT = 0.6 0.8 0 0 0.8 -0.6 0 0 0 0 1 0.5 0 0 0 1
![Page 12: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/12.jpg)
Exemplet Tag nu punkten a = (1 1 0 1)T i den första ramen (”världen”). Vilken är dess motsvarighet i den andra ramen (lokal)?
b = 1.4 0.2 -0.5 1 T
b = (MT)-1a
ger oss
= a
0.6 0.8 0 0 0.8 -0.6 0 0 0 0 1 -0.5 0 0 0 1 P0
v3
v1
v2
Q0
u3
u1
u2
• 1.4
0.2 1
1
0 rel P0, -0.5 rel Q0
Åt andra hållet: p = (1.4 0.2 -0.5 1)T i ram 2. I ram 1 blir den pvärlden = MTp = (1 1 0 1 )T
![Page 13: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/13.jpg)
Fixram och transformationsram Ofta jobbar man med en "fixram" (t.ex. kameran/utsiktspunkten)
och en "transformationsram". Fixramen är fast och transformationsramen tillåts variera.
Exempel:
1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1
α1 α2 α3 1
=
α1 α2 α3 - d 1
Punkt i transf.- ramen
Motsv. punkt i
fixramen
Fixram
Transforma- tionsram
Våra koordinater
MT
d
![Page 14: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/14.jpg)
3D-transformationsmatriser(jfr 2D)
=
=
=
=
=
11000000000000
11'''
11000100010001
111'''
zyx
ss
s
zyx
zyx
zyx
ttt
zyx
zyx
zyx
z
y
x
z
y
x
T
S
TMTranslation
Skalning
![Page 15: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/15.jpg)
3D-rotationsmatriser (tre, en i 2D)
€
x 'y 'z'1
=Rz (θ)
xyz1
=
cosθ −sinθ 0 0sinθ cosθ 0 00 0 1 00 0 0 1
xyz1
x 'y 'z'1
=Rx (θ)
xyz1
=
1 0 0 00 cosθ −sinθ 00 sinθ cosθ 00 0 0 1
xyz1
x 'y 'z'1
=Ry (θ)
xyz1
=
cosθ 0 sinθ 00 1 0 0
−sinθ 0 cosθ 00 0 0 1
xyz1
Rotation kring z-axeln
Rotation kring x-axeln
Rotation kring y-axeln
![Page 16: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/16.jpg)
Multipla transformationer (som 2D) Vi kan sätta samman transformationer genom att
multiplicera matriserna:
1 0 0 0 0 s 0 0 0 0 1 -d 0 0 0 1
α1 α2 α3 1
=
α1 sα2 α3 - d 1
TS
1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1
1 0 0 0 0 s 0 0 0 0 1 0 0 0 0 1
1 0 0 0 0 s 0 0 0 0 1 -d 0 0 0 1
=
T S TS
![Page 17: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/17.jpg)
Multipla transformationer
1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1
1 0 0 0 0 1 0 0 0 0 s 0 0 0 0 1
1 0 0 0 0 1 0 0 0 0 s -d 0 0 0 1
=
T S TS
Observera att ordningen på multiplikationen kan spela roll!
1 0 0 0 0 1 0 0 0 0 1 -d 0 0 0 1
1 0 0 0 0 1 0 0 0 0 s 0 0 0 0 1
1 0 0 0 0 1 0 0 0 0 s -sd 0 0 0 1
=
T S ST
![Page 18: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/18.jpg)
Att specificera orientering (rotationer)
• Vi börjar med att pröva yaw-pitch-roll (gir-stig-roll).
• Antag att flygplanet är modellerat så det initialt "pekar" längs z-axeln.
• Vi roterar först kring z-axeln (roll), sedan kring y-axeln (yaw), sist kring x-axeln (pitch).
• Kallas för att arbeta med Euler angles eller Eulermatriser.
x y
z
![Page 19: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/19.jpg)
Rotation i 3D
Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som
en (1 st) rotation kring en vektor.
Rotationsmatriserna (kring x-, y- och z-axlarna) kan sättas ihop till en transformation utgående från rotationsvektorn
och rotationsvinkeln
v
![Page 20: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/20.jpg)
Allmän 3D-rotation - Angel 4.9.4 Om rotationsenhetsvektorn är a = (ax, ay, az) och rotationsvinkeln runt denna vektor är θ roterar man först kring x-axeln till y-planet (x=0) med vinkeln θx= arctan(ay/az); d=√ay2+az2, cos(θx)=az/d, sin(θx)=ay/d, sedan kring y-axeln till z-planet med vinkeln θy= -arcsin(ax); cos(θy)=d, sin(θy)=-ax, sedan kring z-axeln med vinkeln θz= θ sedan tillbaka kring y-axeln med vinkeln -θy sedan tillbaka kring x-axeln med vinkeln -θx Alltså blir totala transformationsmatrisen: Rx(-θx) Ry(-θy) Rz(θ) Ry(θy) Rx(θx)
![Page 21: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/21.jpg)
Kvaternioner, Angel 4.12 En matematisk struktur som kan beskriva 3D-rotation kring en godtycklig vektor är kvaternioner (quaternions), uppfunna 1843 av irländske matematikern W.R. Hamilton.
Detta motsvarar komplexa talens (Euler mfl, 1700-talet), i2=-1, användning för att beskriva 2D-rotationer i planet: z = x + iy = r (cos µ + isin µ) Rotation vinkeln θ genom multiplikation med p = cos θ + isin θ p*z = r (cos(µ + θ) + i sin(µ + θ))
![Page 22: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/22.jpg)
Kvaternioner (quaternions)
q = (q0, q1, q2, q3) = q0 + q1i + q2j + q3k
där (jfr komplexa tal) i2 = j2 = k2 = -1 ij=k, jk=i, ki=j
ji=-k, kj=-i, ik=-j
En kvaternion q definieras så här:
= (q0, q)
![Page 23: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/23.jpg)
Kvaternioner - algebra Lite kvaternionalgebra: tag två kvaternioner a och b:
a = (q0, q1, q2, q3) = (q0, q) b = (p0, p1, p2, p3) = (p0, p)
Norm och invers:
|a|2 = q02 + q ⋅ q = q0
2 +q12 +q2
2 +q32
a-1 = (1 / |a|2)(q0, -q)
Addition och multiplikation:
a + b = (p0 + q0, p + q) ab = (p0q0 – p ⋅ q, q0p + p0q + q × p)
![Page 24: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/24.jpg)
Kvaternioner - för 3D-rotation
Tag en punkt P i 3D. Skapa kvaternionen
p = (0, P) = xi + yj + zk
Välj rotationsaxeln v normerad (enhetsvektor) Låt rotationsvinkeln vara θ.
v
θ
Skapa nu kvaternionen r enligt r = (cos(θ/2), sin(θ/2)v)
|r|2 = 1 r-1 = (cos(θ/2), -sin(θ/2)v)
P
![Page 25: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/25.jpg)
Genom lite råräknande visar man att p' = rpr-1
ger samma resultat som sammansatta rotationsmatriserna för att rotera punkten P θ radianer kring vektorn v.
Om a och b är kvaternioner som representerar rotation enl. ovan gäller också (analogt med komplexa talen för 2D-
rotationer) att q = ab
är resultatet av att kombinera rotationerna(först a, sedan b).
Kvaternioner - för 3D-rotation
OBS! Angel (både fjärde och femte upplagan) har ett fel i formeln för p' = r p r-1, ska vara sin2 i sista termenp' =cos2(θ/2)p + sin2(θ/2)(p•v)v + 2 sin(θ/2) cos(θ/2)(v x p) - sin2(θ/2) (v x p) x v
![Page 26: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/26.jpg)
Rotationsexempel, matriser Rotation 120 grader runt vektorn (1 1 1)/√3 d = √(2/3) cos θx = az / d = 1/√2, sin θx = 1/ √2 cos θy = d = √(2/3), sin θy = -az = - 1/√3 θz = θ = π/3 Rx = ((1 0 0 0)(0 1/√2 -1/√2 0)(0 1/√2 1/√2 0)(0 0 0 1)) Ry = ((√(2/3) 0 -1/√3 0)(0 1 0 0)(1/√3 0 √(2/3) 0)(0 0 0 1)) Rz = ((-1/2 -√3/2 0 0)(√3/2 -1/2 0 0)(0 0 1 0)(0 0 0 1)) M = Rx(-) Ry(-) Rz() Ry(+) Rx(+) = ((0 1 0 0 )(0 0 1 0)(1 0 0 0)(0 0 0 1)) M (x y z 1) = (y z x 1)
![Page 27: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/27.jpg)
Rotationsexemplet, kvaternioner
Kvaternioner r = cos(θ /2) + (i sin(θ /2) + j sin(θ /2) + k sin(θ /2))/√3 =
1/2 (1 + i + j + k) p = i x + j y + k z r-1= 1/2 (1 - i - j - k) p r-1 = 1/2 (x + y + z) + 1/2 i (x - y + z) + 1/2 j (x + y - z) +
1/2 k (-x + y + z) r p r-1= 0 + i y + j z + k x = (y, z, x) Stämmer! Övning: Använd formeln för att räkna ut samma sak.
![Page 28: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/28.jpg)
Kvaternioner
• Det går alltså att konvertera en kvaternion till en rotationsmatris (och tvärtom)
• Det kan löna sig att lagra orienteringar som kvaternioner: 4 flyttal istället för 3x3 = 9 (för en rotationsmatris)
• Kvaternioner gör det enkelt att interpolera mellan orienteringar (för animering)!
![Page 29: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/29.jpg)
Projektioner - historia
Giotto (1276-1336) Rafael (1483-1520)
![Page 30: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/30.jpg)
Projektioner - historia
![Page 31: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/31.jpg)
Projektioner - historia
Brook Taylor, New Principles of Linear Perspective, 1719.
![Page 32: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/32.jpg)
Projektioner Planar Geometric Projections
Parallell Perspective
1-pt 2-pt 3-pt Orthographic Oblique
Cavalier Cabinet Multiview Axonometric
Isometric Dimetric Trimetric
Alla projektionerna finns beskrivna med illustrativa figurer i Carlbom-Pacioreks artikel och i Angel 5.1.
![Page 33: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/33.jpg)
Perspektivprojektion Projektor på ändligt avstånd. Storlek minskar med avstånd från projektionsytan. Avstånd och vinklar bevaras inte i projektionen. Parallella linjer konvergerar i ”fjärrpunkt” (vanishing point)
Här enpunkts (ett projektionsplan), finns också två- och tre-, se Carlbom-Paciorek
![Page 34: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/34.jpg)
Perspektivprojektion, Angel 5.4
x
y
z
d
y
d z
P Pp
Antag att vi projicerar punkten P på ett bildplan som ligger d enheter från origo och är parallellt med x-y-planet:
Bildplan
![Page 35: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/35.jpg)
Perspektivprojektion
y
d z
P Pp
P = x y z 1 T
z
yp d =
y z
yp = yd z =
y (z / d)
⇔
Likformiga trianglar:
Pp = x/(z/d) y/(z/d) d 1 T
Analogt för xp. Så den projicerade punkten blir:
Pp = xp yp d 1 T
y yp
![Page 36: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/36.jpg)
Perspektivprojektion
Vi vill kunna skriva perspektivprojektionen som en matris M. För att kunna göra det måste vi införa en ”normeringsoperation”
P = x y z w T
med w skilt från 1 ser vi till att alltid dividera med w innan vi fortsätter, d.v.s.
P = x/w y/w z/w 1 T
Om resultatet av en transformation blir en punkt
![Page 37: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/37.jpg)
Perspektiv-projektionsmatris
1 0 0 0 0 1 0 0 0 0 1 0 0 0 1/d 0
x y z 1
= x y z z/d
Eftersom z/d ≠ 1 dividerar vi alla komponenterna
med z/d innan vi använder punkten så att
vi får
x/(z/d) y/(z/d) d 1
Detta kallas perspektivdivision
i OpenGL.
MPp =
z
x
z
x
![Page 38: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/38.jpg)
Ortografisk projektion Projektorerna är vinkelräta mot projektionsytan (på ”oändligt avstånd”).
I enklaste formen är det en eller flera vyer (multiview) med projektionsplan parallella till objektets huvudytor. Avstånd och vinklar bevaras i projektionerna. Typiskt exempel: maskinritningar
Axonometrisk ortografisk: Fortfarande vinkelräta projektorer men objektet vridet så att man ser flera ytor. projektionsplan symmetriskt till alla tre huvudytorna:isometrisk projektionsplan symmetriskt till två av huvudytorna: dimetrisk projektionsplan utan sådan symmetri: trimetrisk Parallellitet bevaras, inte vinklar & avstånd (samma förkortning)
![Page 39: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/39.jpg)
Ortografisk-projektionsmatris
1 0 0 0 0 1 0 0 0 0 0 -d 0 0 0 1
x y z 1
= x y -d 1
MOp = Här är yp=y och xp=x och zp=-d så vi får
(i boken är d satt till 0)
![Page 40: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/40.jpg)
Parametrisk form
Kurvor och ytor
Kubiska (grad 3)
Interpolerande Hermite Bezier B-Spline
Generell B-Spline
Polynom
Generella (grad d)
Uniform NURBS
Explicit form
Implicit form
Uppdelnings- procedur
Catmull-Clark Loop
Angel, kap.11
![Page 41: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/41.jpg)
Representation av kurvor
x
y
1 0
1
0 x = u y = u
0 ≤ u ≤ 1
x = fx(u) y = fy(u)
umin ≤ u ≤ umax
y = f(x) y = x
f(x, y) = 0 x - y = 0
Explicit
Implicit
Para- metrisk
Generellt Exempel
I 3D, med z, lägg till: explicit: z = g(x); implicit: f(x, y,z) =0 & g(x, y,z) = 0; parameter z = fz(u)
![Page 42: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/42.jpg)
Parametriska kurvor
Om vi deriverar uttrycket för kurvan
p(u) = fx(u) fy(u)
dp(u) du =
dfx(u) du
dfy(u) du
får vi en vektor som definierar kurvans tangent:
![Page 43: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/43.jpg)
Exempel p(u) =
u u2
0 ≤ u ≤ 1
dp(u) du =
1 2u
I u = 0.5 får vi tangenten 1 1
![Page 44: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/44.jpg)
Exempel
![Page 45: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/45.jpg)
Parametriska polynomkurvor
p(u) =
cx0 + ucx1 + u2cx2 + ... + uncxn
0 ≤ u ≤ 1
fx(u) fy(u) fz(u)
=
Då p(u) är ett polynom i u kallas kurvan polynomkurva.
Polynomkurvor, visar det sig, har egenskaper som är intressanta för datorgrafik och CAD/CAM. Främst används tredjegrads- (kubiska) polynom.
cy0 + ucy1 + u2cy2 + ... + uncyn
cz0 + ucz1 + u2cz2 + ... + unczn
![Page 46: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/46.jpg)
Interpolerande kubiska polynom
p0 = (p0x p0y p0z)T, p1 = (p1x p1y p1z)T, p2 = (p2x p2y p2z)T , p3 = (p3x p3y p3z)T
px =
p0x p1x p2x p3x
py =
p0y p1y p2y p3y
pz =
p0z p1z p2z p3z
p2 p0
p1
p3
Vi samlar koordinaterna i tre vektorer:
Antag att vi har fyra styrpunkter p0, p1, p2 och p3 och att vi vill att kurvan ska gå genom dessa punkter.
![Page 47: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/47.jpg)
Interpolerande polynomkurvor Vi bestämmer att kurvan ska gå genom styrpunkterna vid
u = 0, u = 1/3, u = 2/3 och u = 1.
p2
p0
p1
p3
u = 0
u = 1/3
Vilka polynomkoefficienter ska vi ha?
u = 2/3
u = 1
![Page 48: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/48.jpg)
Interpolerande polynomkurvor Låt oss börja med x-komponenten. Vi hade att
u = 0: p0x = cx0 u = 1: p3x = cx0 + cx1 + cx2 + cx3 u = 1/3: p1x = cx0 + (1/3)cx1 + (1/3)2cx2 + (1/3)3cx3 u = 2/3: p2x = cx0 + (2/3)cx1 + (2/3)2cx2 + (2/3)3cx3
fx(u) = cx0 + ucx1 + u2cx2 + u3cx3
och vi vill ha
fx(0) = p0x fx(1/3) = p1x fx(2/3) = p2x fx(1) = p3x
![Page 49: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/49.jpg)
Interpolerande polynomkurvor Löser man ekvationssystemet får man
c0x = p0x c1x = –5.5p0x + 9p1x – 4.5p2x + p3x c2x = 9p0x – 22.5p1x + 18p2x – 4.5p3x c3x = –4.5p0x + 13.5p1x – 13.5p2x + 4.5p3x
y- och z-komponenterna får samma värden.
Kurvan som har dessa c-koefficienter sägs interpolera de fyra styrpunkterna.
Koefficient- matrisen
1 0 0 0 -5.5 9 -4.5 1 9 -22.5 18 -4.5 -4.5 13.5 -13.5 4.5
kallas interpolations- geometrimatris och kan användas vid all sådan interpolation
![Page 50: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/50.jpg)
Exempel
p0 = (0 0)T p1 = (1 0)T p2 = (1 1)T
p3 = (0 1)T x
y
1 0
1
0 p0 p1
p2 p3
![Page 51: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/51.jpg)
Exemplet
c0x = p0x c1x = –5.5p0x + 9p1x – 4.5p2x + p3x c2x = 9p0x – 22.5p1x + 18p2x – 4.5p3x c3x = –4.5p0x + 13.5p1x – 13.5p2x + 4.5p3x
p0 = (0 0)T p1 = (1 0)T p2 = (1 1)T p3 = (0 1)T
c0x = 0 c1x = –5.5⋅0 + 9⋅1 – 4.5⋅1 + 0 = 4.5 c2x = 9⋅0 – 22.5⋅1 + 18⋅1 – 4.5⋅0 = –4.5 c3x = –4.5⋅0 + 13.5⋅1 – 13.5⋅1 + 4.5⋅0 = 0
⇓
fx(u) = cx0 + ucx1 + u2cx2 + u3cx3
![Page 52: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/52.jpg)
Exemplet fx(u) = 0 + 4.5u − 4.5u2 + 0 ⋅ u3
fy(u) = 0 − 3.5u + 13.5u2 − 9u3
![Page 53: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/53.jpg)
Interpolationspolynomet är exempel på en parametrisk kubisk polynomkurva
dvs är en kurva på formen
där pi är kurvans styrpunkter
(som interpolationspolynomet går igenom men som kan styra på annat sätt, se Hermite, Bézier, splines)
och bi(u) är kurvans blandningsfunktion.
p(u) = b0(u)p0 + b1(u)p1 + b2(u)p2 + b3(u)p3
![Page 54: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/54.jpg)
Blandningsfunktion, enkelt exempel 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:
P0
P1
fx(u) = (1 – u)p0x + up1x fy(u) = (1 – u)p0y + up1y
b0(u) = 1 – u b1(u) = u
⇓
![Page 55: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/55.jpg)
Blandningsfunktioner, interpolation
p2
p0
p1
p3 u = 0
u = 1/3 u = 2/3
u = 1
b0 = -9(u - 1/3)(u – 2/3)(u-1) b1 = 27u(u-2/3)(u-1)/2 b2 = -27u(u-1/3)(u-1)/2 b3 = 9u(u - 1/3)(u – 2/3)
Blandningsfunktioner
![Page 56: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/56.jpg)
Sammanlänkning av kurvor Icke-kontinuerlig
C0-kontinuerlig
C1-kontinuerlig (derivatan)
C2-kontinuerlig också krökning
(andraderivatan)
![Page 57: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/57.jpg)
Hermitekurvor
Fås om man kräver C1-kontinuitet. Kurvans ekvation är (i 2D)
fx(u) = cx0 + ucx1 + u2cx2 + u3cx3 fy(u) = cy0 + ucy1 + u2cy2 + u3cy3
p0 = (p0x p0y)T p3 = (p3x p3y)T
Vi behåller första och sista styrpunkten:
![Page 58: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/58.jpg)
Hermitekurvor Sedan väljer vi tangenten i p0 och p3 explicit, d.v.s.
df(u=0) du
dfx(u) du
dfy(u) du
= ≡ p′0x
p′0y
u = 0
u = 0
df(u=1) du
dfx(u) du
dfy(u) du
= ≡ p′3x
p′3y
u = 1
u = 1
![Page 59: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/59.jpg)
Hermitekurvor
p0x = fx(0) = cx0 p3x = fx(1) = cx0 + cx1 + cx2 + cx3 p′0x = fx′(0) = cx1 p′3x = fx′(1) = cx1 + 2cx2 + 3cx3
fx(u) = cx0 + ucx1 + u2cx2 + u3cx3
För x-komponenten är kurvans ekvation
så
och dess derivata är
fx ′(u) = cx1 + 2ucx2 + 3u2cx3
![Page 60: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/60.jpg)
Hermitekurvor
1 u u2 u3 fx(u) =
1 0 0 0 0 0 1 0 –3 3 –2 –1 2 –2 1 1
p0x p1x p′0x p′1x
y- och z-komponenterna blir samma.
Löser vi ekvationssystemet får vi
Hermite-geometri matris
![Page 61: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/61.jpg)
Sammanlänkning av kurvor
Vi kan få C1-kontinuitet genom att sätta samman två Hermitekurvor där tangenten är densamma i P3 för första kurvan och P0 för andra kurvan:
P0 P3
P0
P3
![Page 62: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/62.jpg)
Bézierkurvor Samma som Hermite men specificeras genom att
tangenterna definieras med linjer vars andra ändar är styrpunkter
Derivatorna blir
p0
p1 p2
p3
dp0 du = (p1 – p0)/(1/3)
dp3 du
= (p3 – p2)/(1/3)
![Page 63: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/63.jpg)
Bézierkurvor
p0x = cx0 p1x = cx0 + cx1 + cx2 + cx3 3(p1x – p0x) = fx
′(0) = cx1 3(p3x – p2x) = fx′(1) = cx1 + 2cx2 + 3cx3
fx(u) = cx0 + ucx1 + u2cx2 + u3cx3
fx ′(u) = cx1 + 2ucx2 + 3u2cx3
![Page 64: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/64.jpg)
Bézierkurvor
1 u u2 u3 fx(u) =
1 0 0 0 –3 3 0 0 3 –6 3 0 –1 3 –3 1
p0x p1x p2x p3x
Lösningen blir
Bézier-geometrimatris
Blandningsfunktioner b0 = (1-u)3
b1 = 3u(1-u)2 b2 = 3 u2(1-u) b3 = u3
![Page 65: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/65.jpg)
Kubiska B-splinekurvor En nackdel med Hermitekurvor är att
C1-kontinuitet inte alltid räcker.
C2-kontinuitet (mellan kan åstadkommas genom att man släpper kravet att kurvan ska interpolera slutpunkterna på kurvan och ser till att andraderivatan blir lika för den spline som når en punkt från
ena hållet som för den spline som utgår åt andra hållet. pi-1 pi
pi+1 pi+2
![Page 66: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/66.jpg)
Kubiska B-splinekurvor
1 u u2 u3 fx(u) =
1/6 2/3 1/6 0 –1/2 0 1/2 0 1/2 –1 1/2 0 –1/6 1/2–1/2 1/6
pi-2 pi-1 pi
pi+1
B-spline-geometrimatris
Se boken för härledningar:
Blandningsfunktioner b0 = (1-u)3 / 6 b1 = (4 - 6u2 + 3u3) / 6 b2 = (1 + 3u + 3u2 - 3u3) / 6 b3 = u3 / 6
![Page 67: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/67.jpg)
Exempel
![Page 68: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/68.jpg)
Ytor
p(u,v) = fx(u,v) fy(u,v) fz(u,v) x
z u v
x = u+v y = u-v
z = u2+v2 0 ≤ u ≤ 1
x = fx(u,v) y = fy(u,v) z = fz(u,v)
umin ≤ u ≤ umax
z = f(x,y) z=xy
f(x, y, z) = 0 x2+y2+z2 -1 = 0
Explicit
Implicit
Para- metrisk
Generellt Exempel
![Page 69: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/69.jpg)
Parametriska ytor
∂p(u,v)
∂fx(u,v) ∂u
∂fy(u,v) ∂u
∂fz(u,v) ∂u
De vektorer vi får om vi deriverar m.a.p. u och v definierar ytans tangentplan:
∂u =
∂p(u,v)
∂fx(u,v) ∂v
∂fy(u,v) ∂v
∂fz(u,v) ∂v
∂v =
∂p(u,v) ∂u
× ∂p(u,v) ∂v
N(u,v) = är ytans normal.
![Page 70: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/70.jpg)
Exempel
![Page 71: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/71.jpg)
Kubiska polynomytor
0 ≤ u ≤ 1 0 ≤ v ≤ 1
fx(u, v) fy(u, v) = fz(u, v)
∑ i = 0
3
∑ j = 0
3 uivj
cxij cyij czij
p(u,v) =
![Page 72: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/72.jpg)
Interpolerande polynomytor
Kräver 16 styrpunkter:
p00
p33
p10 p20 p30
p01 p02 p03
p13 p23
v
u
![Page 73: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/73.jpg)
Interpolerande polynomytor
Om vi sätter v = 0 får vi en kurva som ska interpolera punkterna p00, p10, p20 och p30.
v = 0
u
v
p00
p33
p10 p20 p30
p01 p02 p03
p13 p23
![Page 74: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/74.jpg)
Interpolerande polynomytor
Sätter vi v = 1 får vi en kurva som måste interpolera punkterna p03, p13, p23 och p33.
v = 1
u
v
p00
p33
p10 p20 p30
p01 p02 p03
p13 p23
![Page 75: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/75.jpg)
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.
![Page 76: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/76.jpg)
Interpolerande polynomytor
![Page 77: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/77.jpg)
Bézierytor
På motsvarande sätt som för interpolerande ytor (se boken).
![Page 78: ramar, matriser, kvaternioner perspektiv...x y z Rotation i 3D Man kan visa att vilken orientering (3D-rotation) som helst kan beskrivas som en (1 st) rotation kring en vektor. Rotationsmatriserna](https://reader033.vdocuments.net/reader033/viewer/2022041714/5e4a55c0c2a29319a354637a/html5/thumbnails/78.jpg)
Inlämningsuppgift 3