Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1ĐỒ HỌA 2D
ĐƯỜNG CONG
Giảng viên : Bùi Tiến Lên
Trang 2Phâ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)
Trang Trang 22222222
- Đường cong CAD (Computer Aided Design)
Trang 3Đường cong được biểu diễn bằng
hàm số
Trang 4xmin
y=f(x)
Trang 5Thuật toán
Bước 1 : Chia miền đối số ra N
đoạn bằng nhau
x0 x1 x2 xN-1xN
Trang 6x0 x1 x2 xN-1xN
Trang 8for(int i=1; i<=N; i++)
Trang 10Vấn đề phân đoạn
Số phân đoạn N là bao nhiêu ?
độ phân giải cột
Trang Trang 10 10
Trang 11Đồ thị đa thức bậc ba
Trang 12Vấn đề tính giá trị đa thức
Cách tính thông thường
Cần 3 phép nhân và 3 phép cộng
Cách tính cải tiến
?
Trang 13Vấn đề tính giá trị đa thức
Đa thức bậc nhất y = ax + b
Cách tính thông thường Cách tính cải tiến
Trang 14Vấn đề tính giá trị đa thức
Đa thức bậc hai y = ax2 + bx + c
Cách tính thông thường Cách tính cải tiến
yi + ∆yi
∆yi + 2a ∆x∆ 2
Trang Trang 14 14
Trang 15Vấn đề tính giá trị đa thức
Trang 16Đường cong được biểu diễn bằng
Phương trình tham số
Trang 17cos 5
cos
=
=
t t
t y
t t
t x
( ) ( )
( )t a ( )t
y
t a
Trang 18Thuật toán
Bước 1 : Chia miền tham số ra
N đoạn bằng nhau
Miền tham số
Trang Trang 18 18
Trang 20(x0, y0)(x1, y1)(x2, y2)
Trang 21Cài đặt
// Hàm vẽ đường cong tham số
void DrawCurve2D(CDC *pDC, TPara2D f, double tmin, double tmax) {
Trang 23Vấn đề phân đoạn
y
tcost
t
y
tcost
t
x
Trang 24ĐƯỜNG CONG BEZIER
Trang 25Định nghĩa đường cong
Trang 26Đường cong Bezier bậc một
hoặcx(t) = (1 – t)p0x + tp1xy(t) = (1 – t)p0y + tp1y
t ∈ [0, 1]
p0
Trang 27Đường cong Bezier bậc hai
t ∈ [0, 1]
p0
Trang 28Đường cong Bezier bậc ba
Trang 29Một số đường cong Bezier bậc ba
Trang 30Công thức xác định đường cong
(
!kn
!k
!
nt
B
với1
,0t
p.tBt
p
khiểnđiều
điểm1
nbởitạo
đượcn
bậcBezier
congđường
Ptts
n k
k k n
n k
n k
0 k
[ ]0,1t
p.tBt
y
p.tBt
x
n k
0 k
ky
n k
n k
0
k
n k
Trang 31Tính chaát 1
Trang 32Tính chất 2
Các điểm điểu khiển tạo thành bao lồi của đường cong
Trang Trang 32 32
Trang 33Độ thẳng của đường cong Bezier
3 2
2 1
1 0
pp
pp
pp
p
pf
−
−+
−+
−
=
Trang 34Thuật toán vẽ đường cong Bezier
Trang Trang 34 34
Trang 35Thuậ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ố tLặ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 36Trang Trang 36 36
p0
p3
p2
p1
Trang 37Tí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
C1: C0 + có cùng vector tiếp tuyến tại điểm đầu mút
C2: C1 + có cùng đạo hàm bậc 2 tại điểm đầu mút
Trang 38Tính liên tục
Liên tục bậc 0
Liên tục bậc 1
Trang Trang 38 38
Liên tục bậc 2
Trang 39Tí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 40Thuật toán vẽ đệ qui
p3
Trang Trang 40 40
Trang 41Thuật toán vẽ đệ qui
3 2
1 1
3 2
1
0 0
1
0 1
0 0
4
pp
2
pr
8
pp
3p
3
pr
2
p
pl
pl
+
+
=
++
3
2 2
1
3 2
1
0 3
2 1
0 2
1
pr
2
p
pr
4
8
pp
3p
3
pl
4
pp
2
pl
2
=
+
=+
+
+
=
++
=
Trang 42Thuật toán vẽ đệ qui
0 1 2 3
Vẽ Bezier (r0, r1, r2, r3)
Kết thúc
Trang 43ĐƯỜNG CONG HERMITE
Trang 44Định nghĩa đường cong
0
v v1
Trang 45Công thức xác định đường cong
Trang 46Một số đường cong Hermite
Trang Trang 46 46
Trang 47Đường cong Bezier bậc ba & Hermite
( B)
2
B 3
H
1
B 0
B 1
H
0
B 3
H
1
B 0
H
0
pp
3v
pp
3v
pp
pp
2
p
B 3
1
p
H 0
v
H
v
Trang 48Dẫn nhập
Bao nhiêu đường cong?
Trang Trang 48 48
Trang 49ĐƯỜNG CONG PHỨC
Trang 50Định nghĩa đường cong phức
Đường cong phức là sự kết hợp của những đường cong
C1
C4
Trang 51Yê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
Đối với người lập trình
1 Biểu diễn dễ dàng và hiệu quả
2 Tính toán hiệu quả
Trang 52Tính liên tục
Liên tục bậc 0
Liên tục bậc 1
Trang Trang 52 52
Liên tục bậc 2
Trang 53Phân loại
1 Đường cong Splines
2 Đường cong B-Splines
3 Đường cong Nurbs (NonUniform Rational B-Splines)
Trang 54CÁC ĐƯỜNG CONG SPLINES
Trang 55Định nghĩa đường cong Splines
Trang 56Pp
=
=
Trang Trang 56 56
1 k 1
k 0
1 k 1
P
P2
t
1v
P
P2
t
1v
Pp
+
Trang 57Ảnh hưởng của tham số tension t
Trang 58Là trường hợp đặc biệt của Cardinal Splines với t = 0
Pp
Pp
2 1
1 0
2
P
Pv
2
P
Pv
Pp
1
3 1
0
2 0
2 1
Trang 59Kochanek Bartels Splines 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
k 1
k k
0
1 k 1
k 0
PP
c1b1P
Pc1b1t1
1v
PP
c1b1P
Pc1b1t
12
1v
Pp
Pp
+
− +
−
−
−+
−+
+
−
=
−+
−+
−
−+
−
=
=
=
Trang 60Ảnh hưởng của tham số bias b
Trang Trang 60 60
Trang 62P2
P3
v2
Trang 631 0
PP
3
PP
3
vv
v
v
14
1
14
11
1 3
n
1 n 2
v
PP
3
PP
3
vv
v
1
14
1
14
Trang 640 1
1
0
PP
3
PP
3v
v1
41
12
2 n n
1 3
0 2
n
1 n
2 1
PP
3
PP
3
PP
3
PP
3
vv
vv
21
14
1
14
1
14
Trang 65Free Splines
Là đường cong liên tục C0
Trang 66ĐƯỜNG CONG B
ĐƯỜNG CONG B SPLINES SPLINES
Trang 681,0t
PtNt
0 i
i
k i
tt
t
tt
Ntt
t
tt
N
khác0
t,t
t nếu
1t
N
1
k 1
i 1 i k
i
k i 1
k i i 1
k i
i
k
i
1 i i
1
i
− + +
+
+
−
− +
+
−
−+
Trang 696
PP
4
Pp
2
1 1
2 1
0 0
4
Pp
3
P2
Pp
3
3 2
1 3
2
1 2
Trang 70P
P
p 1 0 0
=
−
=
Trang Trang 70 70
Pp
1
2 2
1 1
−
=
=
Trang 71ĐƯỜNG CONG HỮU TỈ
Trang 72Đị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 Trang 72 72
Trang 73Đường Conic
Dạng chuẩn
yx
Hyperbola
0b
a,
1b
ya
xEllipse
2 2
2
2 2
2
>
=+
0a
ax4y
Parabola
0b
a,
1b
ya
x
2
2
2 2
Trang 74Đường Conic
Dạng tham số
( ) ( )
(− ∞ ∞)
∈+
t
1
t
2bt
y
t1
t
1at
xEllipse
2
2 2
Trang Trang 74 74
( ) ( )
t
1
t
2bt
y
t1
t
1at
x
Hyperbola
t1
2 2 2
Trang 75Đườ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
p0,w0
p1,w1
Trang 76Công thức
Hệ tọa độ thuần nhất
( ) ( ) ( )
2 1 0
2 0
2 2
2 2
2
1 1
1 2
1
0 0
0 2
0
xtBx
tBx
tB
wy
xt
Bw
y
xt
Bw
y
xt
Bt
w
ty
tx
Trang Trang 76 76
=
2
2 2 1
2 1 0
2 0
2
2 2 1
2 1 0
2 0
2 2
1 1
0 0
wtBw
tBw
tB
ytBy
tBy
tB
Trang 77Công thức
Hệ tọa độ đề các
( ) ( )
2
2 2 1
2 1 0
2 0
2
2 2 1
2 1 0
2 0
2
2 2 1
2 1 0
2 0
xx
x
wtBw
tBw
tB
ytBy
tBy
tB
wtBw
tBw
tB
xtBx
tBx
tBt
y
tx
++
++
++
2 2 1
1 1
2 1 0
0 0
2 0
2
2 2 1
2 1 0
2 0
2
2
2 2 1
1
2 1 0
0
2 0
y
xw
t
By
xwt
By
xw
tB
wtBw
tBw
tB
y
xt
By
xt
By
xtB
Trang 78Biểu diễn Conic bằng Bezier hữu tỉ
Đường Ellipse
( ) ( )
tBa
tB
t1
t2b
t1a
ty
tx
2 2
2 1
2 0 2 2
( )t 1 B ( )t 1 B ( )t 2B
b
0.2.t
Bb
a.1.t
B0
a.1.tB
2tBt
Bt
B
b2tBb
tB0
tB
2 2
2 1
2 0
2 1
2 1
2 0
2 2
2 1
2 0
2 2
2 1
2 0
2 1
0
++
Trang 79ĐƯỜNG CONG NURBS
Trang 80Đị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 Trang 80 80