Introduction to Computer Graphics β Modeling (1) β
April 16, 2020 Kenshi Takayama
Introduction to Computer Graphics Modeling (1) April 16, 2020 - - PowerPoint PPT Presentation
Introduction to Computer Graphics Modeling (1) April 16, 2020 Kenshi Takayama Some additional notes on quaternions 2 Another explanation for quaternions (overview) 1. Any rotation can be decomposed into even number of reflections 2.
April 16, 2020 Kenshi Takayama
2
" β
π! π β
# β
π¦ = cos $
% + π sin $ %
β π¦ cos $
% β π sin $ %
3
4
! " ! #
π
! " $! #
π
! "
π
One way Another way
π + π π£
π + β π€
π! + π€! π" + π€" β π!π" β π€! β π€" + π!π€" + π"π€! + π€!Γπ€"
π€! π€" = βπ€! β π€" + π€!Γπ€"
5
β π€ β π€ = β β π€ " β π€#! = β β π€ β π€ "
If β π€ β π₯ = 0 , then β π€ π₯ = βπ₯ β π€
β π€Γ β π€ is always zero Scalar part Vector part β π€ π₯ = β π€Γπ₯ = βπ₯Γ β π€ = βπ₯ β π€ Multiplying β π€ to rhs produces 1
π¦ across a plane
π: π β
" β
π¦ β β β π β π¦ β π#$
π β
' π β
π¦ + π β π§ = π π β
' β
π¦ + π π β
' β
π§
π gets mapped to β β π :
π β
' β
π = β β π β π β π() = β β π
π¦ satisfies β π¦ β β π = 0 (i.e. on the plane), β π¦ doesnβt move:
π β
' β
π¦ = β β π β π¦ β π() = β β β π¦ β π β π() = β π¦
6
β π¦ π β
# β
π¦ β π π
https://math.stackexchange.com/a/7263
Because if β π¦ β β π = 0 , then β π β π¦ = β β π¦ β π
π¦ β π β β π¦ π
π€ β πΓ β π¦
= β π€
7
https://legacygl-js.glitch.me/demo/quaternion-schematic.html
π β β π¦ π
8
1st reflectionοΌ
β π β β π€
2nd reflectionοΌ
β π β β sin $
% π£ + cos $ % β
π€
Top view
https://legacygl-js.glitch.me/demo/quaternion-schematic.html
' ,
# β
π¦ = π! β β π β π¦ β π23 = β β π β β π β π¦ β π23 β π23 = β π β π β π¦ β π23 β π23
β π β β π€, π β β sin !
" π£ + cos ! " β
π€ to the above
π β π οΌ
β π β β π = β sin !
" π£ + cos ! " β
π€ β β π€ = π# cos !
"
β πΓ β π = β sin !
" π£ + cos ! " β
π€ Γ β π€ = βπ# sin !
" π
Therefore,
β π β π = β β π β β π + β πΓ β π = βπ% cos .
/ + π sin . /
π23 β π23 = 0 1
23 is analogousοΌ β
π23 β π23 = βπ2% cos .
/ β π sin . /
π!, # β π¦ = π$ π β
& β
π¦ = βπ' cos !
" + π sin ! "
β π¦ βπ(' cos !
" β π sin ! "
= cos !
" + π sin ! "
β π¦ cos !
" β π sin ! " 9
(because π£ β β π€ = 0 ) (because π£Γ β π€ = π"π )
represented as unit quaternions
Γ¨ unit circle in 4D space
is represented as another quaternion
(double cover)
hypersphere represents interpolation of these poses
10
β# π = cos !
" + π sin ! "
π βπ (1, 0,0,0) (-1, 0,0,0) (0, π%,π&,π') (0, -π%,-π&,-π') π=0 π=π π=2π π=3π
π = π cos !
" + π sin ! " , π() = π () cos ! " β π sin ! "
π β π¦ π() = π cos !
" + π sin ! "
β π¦ π () cos !
" β π sin ! "
= cos !
" + π sin ! "
β π¦ cos !
" β π sin ! "
Γ¨ so, normalization isnβt needed?
coordinate transformation (because inefficient)
β π¦ β π β β π¦ π cos π + πΓ β π¦ sin π + π β β π¦ π
11
π = 1
π( π"
)!*)" "
12
π¦ π’ = π’ β sin π’ π§ π’ = 1 β cos π’
13
14
π¦ 0 = π¦@ π¦ 1 = π¦3 π¦β²(0) = π¦@
B
π¦B 1 = π¦3
B
π¦ 0 = π@ = π¦@ π¦ 1 = π@ + π3 + π% + πA = π¦3 π¦B 0 = π3 = π¦@
B
π¦B 1 = π3 + 2 π% + 3 πA = π¦3
B
Γ¨ π@ = π¦@ π3 = π¦@
B
π% = β3 π¦@ + 3 π¦3 β 2 π¦@
B β π¦3 B
πA = 2 π¦@ β 2 π¦3 + π¦@
B + π¦3 B t x 1
$, π,
arbitrary domain (2D, 3D, ...)
$
15
π π’ = 1 β π’ π@ + π’ π% π π’ = ? π
3
π% π@
t=0 t=1
3
3% π’ = 1 β π’ π 3 + π’ π%
)' 1 = π'
As π’ changes 0 β 1 , smoothly transition from π@3 to π
3%
3% π’
= 1 β π’ 1 β π’ π@ + π’ π
3 + π’
1 β π’ π
3 + π’ π%
= 1 β π’ %π@ + 2π’ 1 β π’ π
3 + π’%π%
16
π
3
π% π@ π
3% π’ π’ π’ π’ 1 β π’ 1 β π’
π@3 π’ π@3% π’
1 β π’ Quadratic Bezier curve
3
3% π’ = 1 β π’ π 3 + π’ π%
)' 1 = π'
As π’ changes 0 β 1 , smoothly transition from π@3 to π
3%
3% π’
= 1 β π’ 1 β π’ π@ + π’ π
3 + π’
1 β π’ π
3 + π’ π%
= 1 β π’ %π@ + 2π’ 1 β π’ π
3 + π’%π%
17
π
3
π% π@
Quadratic Bezier curve
3, π% πA:
)'+
3%A π’
= 1 β π’
1 β π’ 'π* + 2π’ 1 β π’ π
) + π’'π' + π’
1 β π’ 'π
) + 2π’ 1 β π’ π' + π’'π+
= 1 β π’ Aπ@ + 3π’ 1 β π’ %π
3 + 3π’% 1 β π’ π% + π’AπA
18
π
3%A π’
π@3% π’ π@3%A π’
π’ 1 β π’
π
3
πA π@ π%
Cubic Bezier curve
3, π% πA:
)'+
3%A π’
= 1 β π’
1 β π’ 'π* + 2π’ 1 β π’ π
) + π’'π' + π’
1 β π’ 'π
) + 2π’ 1 β π’ π' + π’'π+
= 1 β π’ Aπ@ + 3π’ 1 β π’ %π
3 + 3π’% 1 β π’ π% + π’AπA
19
π
3
πA π@ π% π@3%A π’
Cubic Bezier curve
E
=F> E EC= π’= 1 β π’ E#= π=
20
2(π’)
Bernstein basis function
1 β π’ ,π* + 4π’ 1 β π’ +π
)
+ 6π’' 1 β π’ 'π' + 4π’+ 1 β π’ π+ + π’,π
,
1 β π’ -π* + 5π’ 1 β π’ ,π
)
+ 10π’' 1 β π’ +π' + 10π’+ 1 β π’ 'π+ + 5π’, 1 β π’ π
,
+ π’-π-
Quartic (4th) Quintic (5th)
3 + 3π’% 1 β π’ π% + π’AπA
1 β π’ % β 2π’(1 β π’) π
3 + 3 2π’ 1 β π’ β π’% π% + 3π’%πA
3
Γ¨ π
3 = π@ + 3 A πB 0
Γ¨ π% = πA β 3
A πB 1
21
π
3
πA π@ π%
πβ²(0) πβ²(1)
22
t 1-t t 1-t t 1
t 1-t t 1-t t 1-t
split by de Casteljauβs algorithm
23
βWeighted averageβ of control points
) + π’'
π' = π* π’ π*+ π) π’ π
)+ π' π’ π'
π* π’ + π) π’ + π' π’ = 1 βπ’
πI π’ = π₯I πI(π’)
πI
B π’ = J6 K β7 J7 K
24
w* = w' = 1
Non-polynomial curve Γ¨ can represent arcs etc.
25
t x t0 t1 t2 t3 t4 t5 x0(t) x1(t) x2(t) x3(t) x4(t) Curve tool in PowerPoint
26
π’.() π’. π’./) π’./' π’ π¦ π¦. π¦.() π¦./) π¦./' π¦.(π’)
27
π’.() π’. π’./) π’./' π’ π¦ π.()(π’) π.(π’) π./)(π’)
28
π’.() π’. π’./) π’./' π’ π¦ π.(π’) π./)(π’)
29
π’.() π’. π’./) π’./' π’ π¦ π¦.(π’)
Summary:
curve passing through its adjacent CPs
constraints at both ends
30
A recursive evaluation algorithm for a class of Catmull-Rom splines [Barry,Colgman,SIGGRAPH88]
π π’@ = π@ π π’3 = π
3
π π’% = π% π π’A = πA π π’ π’3 β€ π’ β€ π’%
π’M = π’M23 + 1
π’M = π’M23 + πM23 β πM
π’M = π’M23 + πM23 β πM
31
Parameterization of Catmull-Rom Curves [Yuksel,Schaefer,Keyser,CAD11]
32
Parameterization of Catmull-Rom Curves [Yuksel,Schaefer,Keyser,CAD11]
33
π-Curves: Interpolation at Local Maximum Curvature [Yan, Schiller, Wilensky, Carr, Schaefer, SIGGRAPH 2017] Control points Catmull-Rom π-Curves
https://www.youtube.com/watch?v=MLg8xQgEIfk
Γ¨ reverse compute control points of quadratic Bezier
34
Curvature maxima
i-th quad Bezier (i+1)-th quad Bezier
Possible configurations with cubic Bezier
35
Global/nonlinear formulation = iterative computation Change of one CP = change of entire shape βBucklingβ always occurs on CPs Curvature discontinuity at convex/concave boundary
Γ¨ Next lecture
http://geometrie.foretnik.net/files/NURBS-en.swf
36
π π‘, π’ = J
IQ@ A
J
PQ@ A
πI
A π‘ π P A π’ πIP
37
Bernstein basis functions π+
$ π’ = 1 β π’ $
π(
$ π’ = 3π’ 1 β π’ "
π"
$ π’ = 3π’"(1 β π’)
π$
$ π’ = π’$
38
https://en.wikipedia.org/wiki/Coons_patch Patch function: where is the bilinear interpolation of four corners c0 c1 d0 d1 s t
39
40