Đồ họa 2D - Đường cong

Phân loại

Quan điểm toán học

- Đường cong được biểu diễn bằng hàm số

- Đường cong được biểu diễn bằng phương trình tham số

Quan điểm thiết kế

- Đường cong CAD (Computer Aided Design)

pdf80 trang | Chuyên mục: Đồ Họa Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 3376 | Lượt tải: 4download
Tóm tắt nội dung Đồ họa 2D - Đường cong, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
=
8,0t
tsintty
tcosttx
ĐƯỜNG CONG BEZIER
Định nghĩa đường cong
Input
n +1 điểm điều khiển {p0, p1, ... , pn}
Output
p1
Trang 25
p0
pn
Đường cong Bezier bậc một
p(t) = (1 – t)p0 + tp1
t ∈ [0, 1]
hoặc
p1
Trang 26
x(t) = (1 – t)p0x + tp1x
y(t) = (1 – t)p0y + tp1y
t ∈ [0, 1]
p0
Đường cong Bezier bậc hai
p(t) = (1 – t)2p0 + 2(1 – t)tp1 + t2p2
t ∈ [0, 1]
hoặc
p2
p1
Trang 27
x(t) = (1 – t)2p0x + 2(1 – t)tp1x + t2p2x
y(t) = (1 – t)2p0y + 2(1 – t)tp1y + t2p2y
t ∈ [0, 1]
p0
Đường cong Bezier bậc ba
p(t) = (1 – t)3p + 3(1 – t)2tp + 3(1 – t)t2p + t3p
p0
p1
p3
p2
Trang 28
0 1 2 3
t ∈ [0, 1]
hoặc
x(t) = (1 – t)3p0x + 3(1 – t)2tp1x + 3(1 – t)t2p2x + t3p3x
y(t) = (1 – t)3p0y + 3(1 – t)2tp1y + 3(1 – t)t2p2y + t3p3y
t ∈ [0, 1]
Một số đường cong Bezier bậc ba
Trang 29
Công thức xác định đường cong
( ) ( )
[ ]
( ) ( )
hoặc
t)t1(
!kn!k
!n
tB với
1,0t
p.tBtp
khiển điều điểm 1n bởi tạo được n bậc Bezier cong đường Ptts
nk
kknn
k
nk
0k
k
n
k
−
−
=
∈
=
+
∑
=
−
=
=
Trang 30
( ) ( )
( ) ( )
[ ]1,0t
p.tBty
p.tBtx
nk
0k
ky
n
k
0k
xk
n
k
∈
=
=
∑
∑
=
=
=
Tính chất 1
Bảo toàn qua phép biến đổi affine.
Trang 31
Tính chất 2
Các điểm điểu khiển tạo thành bao lồi của đường cong
Trang 32
Độ thẳng của đường cong Bezier
p0
p1 p2
p3
Trang 33
30
322110
pp
pppppp
f
−
−+−+−
=
Thuật toán vẽ đường cong Bezier
Trang 34
Thuật toán vẽ đường cong Bezier
Xét đường cong Bezier với các điểm điều khiển {p0, p1, 
... , pn}, nối các điểm liên tiếp để tạo thành đa giác điều 
khiển
Chia mỗi đoạn trong đa giác với tỉ số t:(1-t), nối các 
điểm mới tính, ta có được đa giác với số đỉnh ít hơn 1
Lặp lại bước trên cho đến khi chỉ còn một điểm đơn, 
chính là điểm của đường cong Bezier ứng với tham số t
Trang 35
Đạo hàm
p’(0) = 3(p1 – p0)
p’(1) = 3(p3 – p2)
p”(0) = 6(p0 – 2p1 + p2)
p”(1) = 6(p1 – 2p2 + p3)
pp
Trang 36
p0
p3
21
Tính liên tục
•Một đường cong Bezier không đủ phức tạp
•Ghép nhiều đường cong Bezier với nhau
•Yêu cầu tính liên tục tại các điểm ghép nối
•Liên tục tham số
C0: liên tục tham số bậc 0, hai Bezier có cùng đầu mút
C1: C0 + có cùng vector tiếp tuyến tại điểm đầu mút
Trang 37
C2: C1 + có cùng đạo hàm bậc 2 tại điểm đầu mút
Tính liên tục
Liên tục bậc 0
Liên tục bậc 1
Trang 38
Liên tục bậc 2
Tính liên tục
•Liên tục hình học
•G1: tiếp tuyến cùng hướng nhưng không cần cùng độ 
lớn
•G2: cùng tiếp tuyến và cùng độ cong
Trang 39
Thuật toán vẽ đệ qui
p1 p2
p3
Trang 40
p0
l0
r3
l1
l2 l3
r2
r1r0
Thuật toán vẽ đệ qui
321
1
3210
0
10
1
00
4
pp2p
r
8
pp3p3p
r
2
pp
l
pl
++
=
+++
=
+
=
=
Trang 41
33
32
2
3210
3
210
2
pr
2
pp
r
8
pp3p3p
l
4
pp2p
l
=
+
=
+++
=
++
=
Thuật toán vẽ đệ qui
Vẽ Bezier (p0, p1, p2, p3)
Bắt đầu
Nếu Thẳng (p0, p1, p2, p3) thì
Vẽ đoạn thẳng p0p3
Ngược lại
Chia {pi} thành {li} và {ri}
Vẽ Bezier (l0, l1, l2, l3)
Trang 42
Vẽ Bezier (r0, r1, r2, r3)
Kết thúc
ĐƯỜNG CONG HERMITE
Định nghĩa đường cong
Input
2 điểm {p0, p1}
2 vector {v0, v1}
Ouput
Trang 44
p0 p1
0v

1v

Công thức xác định đường cong
p0 p1
0v

1v

Trang 45
p(t) = H03(t)p0 + H13(t)p1 + H23(t)v0 + H33(t)v1
p(t) = (2t3 + 3t2 + 1)p0 + (-2t3 + 3t2)p1 + (t3 – 2t2 + t)v0 + (t3 – t2)v1
t ∈ [0, 1]
hoặc
x(t) = (2t3 + 3t2 + 1)p0x + (-2t3 + 3t2)p1x + (t3 – 2t2 + t)v0x + (t3 – t2)v1x
y(t) = (2t3 + 3t2 + 1)p0y + (-2t3 + 3t2)p1y + (t3 – 2t2 + t)v0y + (t3 – t2)v1y
t ∈ [0, 1]
Một số đường cong Hermite
Trang 46
Đường cong Bezier bậc ba & Hermite
( )
( )B2B3H1
B
0
B
1
H
0
B
3
H
1
B
0
H
0
pp3v
pp3v
pp
pp
−=
−=
=
=
Trang 47
H
0pB
0p
B
1p
B
2p
B
3p H
1p
H
0v
H
1v
Dẫn nhập
Bao nhiêu 
đường cong?
Trang 48
ĐƯỜNG CONG PHỨC
Định nghĩa đường cong phức
Đường cong phức là sự kết hợp của những đường cong 
cơ sở C = {C1, C2, … , Cn}
C2 C3
C
Trang 50
C1
4
Yêu cầu thiết kế đường cong phức
Đối với người thiết kế
1. Dễ vẽ
2. Liên tục
3. Cục bộ
Đối với người lập trình
Trang 51
1. Biểu diễn dễ dàng và hiệu quả
2. Tính toán hiệu quả
Tính liên tục
Liên tục bậc 0
Liên tục bậc 1
Trang 52
Liên tục bậc 2
Phân loại
1. Đường cong Splines
2. Đường cong B-Splines
3. Đường cong Nurbs (NonUniform Rational B-Splines)
Trang 53
CÁC ĐƯỜNG CONG SPLINES
Định nghĩa đường cong Splines
Input
n +1 điểm {P0, P1, ... , Pn}
và một số thông tin khác
Output
C = {C1, C2, …, Cn} với Ci là các đường cong Hermite
P
Trang 55
P0
1
P2
Pn-1
Pn
C1
C2
Cn
Cardinal Splines
- Tham số tension t
Pk
Pk+1
k0
Pp
Pp
=
=
Trang 56
Pk-1
Pk+2
( ) ( )
( ) ( )k2k1
1k1k0
1k1
PP
2
t1
v
PP
2
t1
v
−
−
=
−
−
=
+
−+
+
Ảnh hưởng của tham số tension t
Trang 57
t0
Catmull-Rom Splines
Là trường hợp đặc biệt của Cardinal Splines với t = 0
Pp
Pp
21
10
=
=
P1
P2
P4
Trang 58
2
PP
v
2
PP
v
13
1
02
0
−
=
−
=
P0
P3
Kochanek-Bartels Splines
Là trường hợp tổng quát của Cardinal Splines
- Tham số tension t
- Tham số bias b
- Tham số continuity c
k0 Pp =
Trang 59
( ) ( )( )( ) ( )( )( )[ ]
( ) ( )( )( ) ( )( )( )[ ]1k2kk1k1
k1k1kk0
1k1
PPc1b1PPc1b1t1
2
1
v
PPc1b1PPc1b1t1
2
1
v
Pp
+++
+−
+
−−−+−++−=
−+−+−−+−=
=
Ảnh hưởng của tham số bias b
Trang 60
b0
Natural Splines
Là đường cong liên tục C2
P1
P
v0
v1
v3
Trang 61
P0
P2
3
v2
Natural Splines
P1
P
v0
v1
v3
Trang 62
P0
P2
3
v2
Natural Splines
Trường hợp 1 : 
Biết các vector v0 và vn
( )
( ) 







−
−
















02
0
1
0
PP3
PP3
v
v
v
v
141
141
1
………
………
……………
Trang 63
( )










−
=




















−−
n
2nn
13
n
1n
2
v
PP3
v
v
1
141
……
……………
………
………………
Natural Splines
Trường hợp 2 : 
Đạo hàm bậc hai tại hai điểm P0 và Pn đều bằng 0 
( )
( ) 




−
−












02
01
1
0
PP3
PP3
v
v
141
12
………
…………
Trang 64
( )
( )
( ) 










 −
−
−
=
























−
−−
1nn
2nn
13
n
1n
2
PP3
PP3
PP3
v
v
v
21
141
141
……
…………
………
………………
………
Free Splines
Là đường cong liên tục C0
Trang 65
ĐƯỜNG CONG B-SPLINES
Định nghĩa
Input
n +1 điểm {P0, P1, ... , Pn}, Bậc k – 1, Tập hợp tham số knot 
{t0, t1, … , tn+k}
Output
C = {C1, C2, …, Cn-2} với Ci là các đường cong Bezier
P1 P2
Trang 67
P0 P3 P4
P5C1
C2
C3
Công thức
( ) ( )
[ ]
[ ]t,tt nếu1
Với
1,0t
PtNtp
ni
0i
i
k
i
=
=
∈
=∑
Trang 68
( )
( ) ( ) ( )tN
tt
tt
tN
tt
tt
tN
khác0
tN
1k
1i
1iki
ki1k
i
i1ki
ik
i
1ii1
i
−
+
++
+−
−+
+
−
−
+
−
−
=


 ∈
=
Công thức B-Splines bậc ba đều
P1 P2
P5
p0
p1 p2
p3
3
PP2
p
6
PP4P
p
21
1
210
0
+
=
++
=
Trang 69
P0 P3 P4
6
PP4P
p
3
P2P
p
321
3
21
2
++
=
+
=
Công thức B-Splines bậc hai đều
P1 P2
P5
p2
p1
Pp
2
PP
p 010
=
−
=
Trang 70
P0 P3 P4
p0
2
PP
p 122
11
−
=
ĐƯỜNG CONG HỮU TỈ
Định nghĩa
Là đường cong trong đó các hàm x(t) và y(t) là các 
hàm đa thức hữu tỉ
Trang 72
Đường tròn Đường ellipse
Đường Conic
Dạng chuẩn
yx
Hyperbola
0 b a, 1
b
y
a
x
Ellipse
22
2
2
2
2
>=+
Trang 73
0 a ax4y
Parabola
0 b a, 1
ba
2
22
>=
>=−
Đường Conic
Dạng tham số
( )
( )
( )∞∞−∈
+
=
+
−
=
,t 
t1
t2
bty
t1
t1
atx
Ellipse
2
2
2
Trang 74
( )
( )
( )∞∞−∈
−
=
−
+
=
,t 
t1
t2
bty
t1
t1
atx
Hyperbola
2
2
2
Đường Bezier hữu tỉ bậc hai
Input 
p0(x0, y0) và trọng số w0
p1(x1, y1) và trọng số w1
p2(x2, y2) và trọng số w2
Output
p1,w1
Trang 75
p0,w0
p2,w2
Công thức
Hệ tọa độ thuần nhất
( )
( )
( )
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) 


 ++










+










+










=










2
2
21
2
10
2
0
2
2
2
2
2
1
1
1
2
1
0
0
0
2
0
xtBxtBxtB
w
y
x
tB
w
y
x
tB
w
y
x
tB
tw
ty
tx
Trang 76
( ) ( ) ( ) 




 ++
++=
2
2
21
2
10
2
0
2
2
21
2
10
2
0
wtBwtBwtB
ytBytBytB
Công thức
Hệ tọa độ đề các
( )
( )
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) 222121020
2
2
21
2
10
2
0
2
2
21
2
10
2
0
2
2
21
2
10
2
0
xxx
wtBwtBwtB
ytBytBytB
wtBwtBwtB
xtBxtBxtB
ty
tx













++
++
++
++
=





Trang 77
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) 222121020
2
2
2
2
2
1
1
1
2
1
0
0
0
2
0
2
2
21
2
10
2
0
2
22
2
1
12
1
0
02
0
wtBwtBwtB
y
x
wtB
y
x
wtB
y
x
wtB
wtBwtBwtB
y
tB
y
tB
y
tB
++






+





+





=
++




+



+



=
Biểu diễn Conic bằng Bezier hữu tỉ
Đường Ellipse
( )
( )
( )
( )
( ) ( ) ( )
( ) ( ) ( )
0tBatBatB
t1
t2b
t1a
ty
tx
2
2
2
1
2
0
2
2



 ++
+





 −
=





Trang 78
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) 2.tB1.tB1.tB
b
0
.2.tB
b
a
.1.tB
0
a
.1.tB
2tBtBtB
b2tBbtB0tB
2
2
2
1
2
0
2
1
2
1
2
0
2
2
2
1
2
0
2
2
2
1
2
0
++






+





+





=
++
 ++
=
ĐƯỜNG CONG NURBS
Định nghĩa
Là đường cong phức C = {C1, C2, …, Cn-2} với Ci là các 
đường cong Bezier hữu tỉ
Trang 80

File đính kèm:

  • pdfĐồ họa 2D - Đường cong.pdf