22N15-DHMT - Baitap-102220026-102220041

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

2.3.

BÀI TẬP ĐƯỜNG, MẶT CONG THAM SỐ

Giá trị tham số u được xác định dựa theo mã SV của nhóm trưởng.

Ví dụ:

Mã sinh viên u
102220026 0.26

1) Cho đường cong Bézier có n + 1 = 4 đỉnh điều khiển P0(10, 0), P1(20, 30),
P2(50, 40), P3(80, 0). Tính tọa độ (Cx, Cy) của một điểm C(u) trên đường cong
ứng với tham số u Î [0, 1].

Xét đường cong Bézier có n + 1 = 4 đỉnh điều khiển P0, P1, P2, P3:

Phương trình của đường cong như sau

C(u) = (1-u) + 3u(1-u) + 3u + u 3P0 2P1 2(1-u)P2 3P3

Với u = 0.26, ta được:

C (0.26) = (1-0.26)3 x (10, 0) + 3x0.26(1-0.26)2 x(20, 30) + 3x0.262 (1-0.26)x(50, 40) +0.263
x(80,0)

=c (21.5, 18.82)

->C (x, y) = (21.5, 18.82)

2) Cho đường cong B-spline đồng nhất (uniform) có n + 1 = 4 đỉnh điều khiển
P0(0, 10), P0(10, 0), P1(20, 30), P2(50, 40), P3(80, 0) có bậc p = 3. Tính tọa độ
(Cx, Cy) của điểm C(u) trên đường cong ứng với tham số tự chọn u Î [0, 1].

Phương trình biểu diễn đường cong B-spline bậc 3 (p = 3) đồng nhất có 4 đỉnh
điều khiển P0, P1, P2, P3:
C(u)=
C(u)= N0,3(u)P0 + N1,3(u)P1 + N2,3(u)P2 + N3,3(u)P3
Với các hàm cơ sở Ni,3(u) được xác định (u = 0.26):
N0,3(u) = (1-u)3 = 0.405224
N1,3(u) = (3u3 -6u2 + 4) = 3.647128
N2,3(u) = (-3u3 +3u2 + 1) = 1.150072
N3,3(u) = u3 = 0.017576
->C(u) = 0.405224x(0, 10) + 3.647128 x(10, 40) + 1.150072 x(40, 40) +
0.017576 x (50, 0)
= (83.35296, 195.94024)
->C (x, y) = (83.35296, 195.94024)

2.4. BÀI TẬP THUẬT TOÁN CƠ BẢN VẼ ĐƯỜNG

(xa, ya) = ( 22 , 0 )

(xb, yb) = ( 37 , 26 )

1) Cho A(xa, ya), B(xb, yb) trong hệ tọa độ màn hình. Trình bày các bước tính dãy
điểm tọa độ nguyên để kẻ đoạn thẳng AB theo thuật toán Bresenham. Yêu cầu trình
bày kết quả tính toán theo dạng bảng.

∆ x=xB−xA=15
∆ y = yB− yA=26
∆ y 26
m= = >1
∆ x 15
 Đổi vai trò x, y
 P = 2∆ x - ∆ y = 2*15 – 26 = 4
k pk = pk-1 Kiểm tra pk Tính toán (xk, yk)
0 P=4 (22, 0)
1 P=4>0 P = p + 2*dx – P = 4 + 2*15 - X = x+1 = Y = y + 1 (23, 1)
2*dy 2*26 = -18 23 =1
2 P= -18 < P = p + 2*dx P = -18 + 2*15 X = x = Y = y + 1 (23, 2)
0 = 12 23 =2
3 P= 12 > 0 P = p + 2*dx - P = 12 + 2*15 X = x + 1 Y = y + 1 (24, 3)
2*dy – 2*26 = -10 = 24 =3
4 P= -10 < P = p + 2*dx P = -10 + 2*15 X = x = Y = y + 1 (24, 4)
0 = 20 24 =4
5 P= 20 > 0 P = p + 2*dx - P = 20 + 2*15 X = x + 1 Y = y + 1 (25, 5)
2*dy – 2*26 = -2 = 25 =5
6 P= -2 < 0 P = p + 2*dx P = -2 + 2*15 = X = x = Y = y + 1 (25, 6)
28 25 =6
7 P = 28 > 0 P = p + 2*dx - P = 28 + 2*15 X = x+1 = Y = y + 1 (26, 7)
2*dy – 2*26 = 6 26 =7
8 P = 6 >= P = p + 2*dx – P = 6 + 2*15 – X = x + 1 Y = y + 1 (27, 8)
0 2*dy 2*26 = -16 = 27 =8
9 P = -16 P = p + 2*dx P = -16 + 2*15 X = x = Y = y + 1 (27, 9)
<0 = 14 27 =9
10 P = 14 > 0 P = p + 2*dx – P = 14 + 2*15 X = x + 1 Y = y + 1 (28, 10)
2*dy – 2*26 = -8 = 28 = 10
11 P = -8 < 0 P = p + 2*dx P = -8 + 2*15 = X = x = Y = y + 1 (28, 11)
22 28 = 11
12 P= 22 > 0 P = p + 2*dx - P = 22 + 2*15 X = x + 1 Y = y + 1 (29, 12)
2*dy – 2*26 = 0 = 29 = 12
13 P= 0 >=0 P = p + 2*dx – P = 0 + 2*15 – X = x + 1 Y = y + 1 (30, 13)
2*dy 2*26 = -22 = 30 = 13
14 P= -22 < P = p + 2*dx P = -22 + 2*15 X = x = Y = y + 1 (30, 14)
0 =8 30 = 14
15 P= 8 >=0 P = p + 2*dx – P = 8 + 2*15 – X = x + 1 Y = y + 1 (31, 15)
2*dy 2*26 = -14 = 31 = 15
16 P=-14 <0 P = p + 2*dx P = -14 + 2*15 X = x = Y = y + 1 (31, 16)
= 16 31 = 16
17 P=16 >= P = p + 2*dx – P = 16 + 2*15 X = x + 1 Y = y + 1 (32, 17)
0 2*dy – 2*26 = -6 = 32 = 17
18 P = -6< 0 P = p + 2*dx P = -6 + 2*15 = X = x = Y = y + 1 (32, 18)
24 32 = 18
19 P = 24 >= P = p + 2*dx – P = 24 + 2*15 X = x + 1 Y = y + 1 (33, 19)
0 2*dy – 2*26 = 2 = 33 = 19
20 P = 2 > 0 P = p + 2*dx - P = 2 + 2*15 – X = x + 1 Y = y + 1 (34, 20)
2*dy 2*26 = -20 = 34 = 20
21 P=-20>=0 P = p + 2*dx P = -20 + 2*15 X = x = Y = y + 1 (34, 21)
= 10 34 = 21
22 P = 10>0 P = p + 2*dx - P = 10 + 2*15 X = x+1 = Y = y + 1 (35, 22)
2*dy – 2*26 = -12 35 = 22
23 P= -12 < P = p + 2*dx P = -12 + 2*15 X = x = Y = y + 1 (35, 23)
0 = 18 35 = 23
24 P= 18 P = p + 2*dx – P = 18 + 2*15 X = x + 1 Y = y + 1 (36, 24)
>=0 2*dy – 2*26 = -4 = 36 = 24
25 P=-4 < 0 P = p + 2*dx P = -4 + 2*15 = X = x = Y = y + 1 (36, 25)
26 36 = 25
26 P=26 >=0 P = p + 2*dx – P = 26 + 2*15 X = x + 1 Y = y + 1 (37, 26)
2*dy – 2*26 = 4 = 37 = 26

2) Cho A(xa, ya), B(xb, yb) trong hệ tọa độ màn hình. Trình bày các bước tính dãy
điểm tọa độ nguyên để kẻ đoạn thẳng AB theo thuật toán Midpoint. Yêu cầu trình
bày kết quả tính toán theo dạng bảng.

∆ x=xB−xA=15
∆ y = yB− yA=26
∆ y 26
m= = >1
∆ x 15
 Hoán vị A(0; 22) B(26; 37)
k pk = pk-1 Kiểm tra pk Tính toán (xk, yk)
0 P = -1.5 (22, 0)
1 P=-1.5 < P = p + dy P = -1.5 + 15 = X = x + 1 Y = y = (22, 1)
0 13.5 =1 22
2 P=13.5 P = p + dy - dx P = 13.5 + 15 – X = x + 1 Y = y + 1 (23, 2)
>=0 33 = -4.5 =2 = 23
3 P=-4.5 < P = p + dy P = -4.5 + 15 = X = x + 1 Y = y = (23, 3)
0 10.5 =3 23
4 P=10.5 P = p + dy - dx P = 10.5 + 15 – X = x + 1 Y = y + 1 (24, 4)
>=0 33 = -7.5 =4 = 24
5 P=-7.5 P = p + dy P = -7.5 + 15 = X = x + 1 Y = y = (24, 5)
>=0 7.5 =5 24
6 P=7.5 >= P = p + dy – dx P = 7.5 + 15 - X = x + 1 Y = y + 1 (25, 6)
0 33 = -10.5 =6 = 25
7 P = -10.5 P = p + dy P = -10.5 + 15 X = x + 1 Y = y = (25, 7)
<0 = 4.5 =7 25
8 P = 4.5 P = p + dy - dx P = 4.5 + 15 – X = x + 1 Y = y + 1 (26, 8)
>= 0 33 = -13.5 =8 = 26
9 P = -13.5 P = p + dy P = -13.5 + 15 X = x + 1 Y = y = (26, 9)
<0 = 1.5 =9 26
10 P = 1.5 P = p + dy - dx P = 1.5 + 15 – X = x + 1 Y = y + 1 (27, 10)
>=0 33 = -16.5 = 10 = 27
11 P = -16.5 P = p + dy P = -16.5 + 15 X = x + 1 Y = y = (27, 11)
<0 = -1.5 = 11 27
12 P=-1.5 < P = p + dy P = -1.5 + 15 = X = x + 1 Y = y = (27, 12)
0 13.5 = 12 27
13 P=13.5 P = p + dy - dx P = 13.5 + 15 – X = x + 1 Y = y + 1 (28, 13)
>=0 33 = -4.5 = 13 = 28
14 P=-4.5 < P = p + dy P = -4.5 + 15 = X = x + 1 Y = y = (28, 14)
0 10.5 = 14 28
15 P=10.5 P = p + dy - dx P = 10.5 + 15 – X = x + 1 Y = y + 1 (29, 15)
>=0 33 = -7.5 = 15 = 29
16 P=-7.5 P = p + dy P = -7.5 + 15 = X = x + 1 Y = y = (29, 16)
>=0 7.5 = 16 29
17 P=7.5 >= P = p + dy – dx P = 7.5 + 15 - X = x + 1 Y = y + 1 (30, 17)
0 33 = -10.5 = 17 = 30
18 P = -10.5 P = p + dy P = -10.5 + 15 X = x + 1 Y = y = (30, 18)
<0 = 4.5 = 18 30
19 P = 4.5 P = p + dy - dx P = 4.5 + 15 – X = x + 1 Y = y + 1 (31, 19)
>= 0 33 = -13.5 = 19 = 31
20 P = -13.5 P = p + dy P = -13.5 + 15 X = x + 1 Y = y = (31, 20)
<0 = 1.5 = 20 31
21 P = 1.5 P = p + dy - dx P = 1.5 + 15 – X = x + 1 Y = y + 1 (32, 21)
>=0 33 = -16.5 = 21 = 32
22 P = -16.5 P = p + dy P = -16.5 + 15 X = x + 1 Y = y = (32, 22)
<0 = -1.5 = 22 32
23 P=-1.5 < P = p + dy P = -1.5 + 15 = X = x + 1 Y = y = (32, 23)
0 13.5 = 23 32
24 P=13.5 P = p + dy - dx P = 13.5 + 15 – X = x + 1 Y = y + 1 (33, 24)
>=0 33 = -4.5 = 24 = 33
25 P=-4.5 < P = p + dy P = -4.5 + 15 = X = x + 1 Y = y = (33, 25)
0 10.5 = 25 33
26 P=10.5 P = p + dy - dx P = 10.5 + 15 – X = x + 1 Y = y + 1 (34, 26)
>=0 33 = -7.5 = 26 = 34
27 P=-7.5 P = p + dy P = -7.5 + 15 = X = x + 1 Y = y = (34, 27)
>=0 7.5 = 27 34
28 P=7.5 >= P = p + dy – dx P = 7.5 + 15 - X = x + 1 Y = y + 1 (35, 28)
0 33 = -10.5 = 28 = 35
29 P = -10.5 P = p + dy P = -10.5 + 15 X = x + 1 Y = y = (35, 29)
<0 = 4.5 = 29 35
30 P = 4.5 P = p + dy - dx P = 4.5 + 15 – X = x + 1 Y = y + 1 (36, 30)
>= 0 33 = -13.5 = 30 = 36
31 P = -13.5 P = p + dy P = -13.5 + 15 X = x + 1 Y = y = (36, 31)
<0 = 1.5 = 31 36
32 P = 1.5 P = p + dy - dx P = 1.5 + 15 – X = x + 1 Y = y + 1 (37, 32)
>=0 33 = -16.5 = 32 = 37
33 P = -16.5 P = p + dy P = -16.5 + 15 X = x + 1 Y = y = (37, 33)
<0 = -1.5 = 33 37

3) Cho O(xa, ya) trong hệ tọa độ màn hình và giá trị nguyên R. Trình bày các bước
tính dãy điểm tọa độ nguyên để kẻ đường tròn tâm O có bán kính R theo thuật toán
Midpoint. Yêu cầu trình bày kết quả tính toán theo dạng bảng.

xc = 0, yc = 26

Gán tọa độ ban đầu (x0, y0):


x0 = 0, y0 = R = 14
P0 = 1 -14 = -13 Pk = P0

Góc 45o thứ nhất


k pk = pk-1 Kiểm tra pk Tính toán (xk, yk) (xplot,yplot)
0 P = -13 (0, 14) (0, 47)
1 P=-13 < P = p + 2*x +3 P = -13 + 2*0 X = x + 1 Y = y = (1, 14) (1, 47)
0 + 3 = -10 =1 14
2 P=-10 < P = p + 2*x +3 P = -10 + 2*1 X = x + 1 Y = y = (2, 14) (2, 47)
0 + 3 = -5 =2 14
3 P=-5 < 0 P = p + 2*x +3 P = -5 + 2*2 + X = x + 1 Y = y = (3, 14) (3, 47)
3=2 =3 14
4 P=2 >=0 P = p + 2*x – P = 2 + 2*3 – X = x + 1 Y = y - 1 (4, 13) (4, 46)
2*y + 5 2*14 + 5 = -15 = 4 = 13
5 P=-15 < P = p + 2*x +3 P = -15 + 2*4 X = x + 1 Y = y = (5, 13) (5, 46)
0 + 3 = -4 =5 13
6 P=-4 < 0 P = p + 2*x +3 P = -4 + 2*5 + X = x + 1 Y = y = (6, 13) (6, 46)
3=9 =6 13
7 P=9 >= 0 P = p + 2*x – P = 9 + 2*6 – X = x + 1 Y = y - 1 (7, 12) (7, 45)
2*y + 5 2*13 + 5 = 0 =7 = 12
8 P=0 >= 0 P = p + 2*x – P = 0 + 2*7 – X = x + 1 Y = y - 1 (8, 11) (8, 44)
2*y + 5 2*12 + 5 = -5 = 8 = 11
9 P = -5 < P = p + 2*x +3 P = -5 + 2*8 + X = x + 1 Y = y = (9, 11) (9, 44)
0 3 = 14 =9 11
10 P = 14 > P = p + 2*x – P = 14 + 2*9 X = x + 1 Y = y – 1 (10, 10) (10, 43)
0 2*y + 5 – 2*11 + 5 = = 10 =10
15

(xplot, yplot)
I IV II III
(0, 47) (14, 33) (14, 33) (0, 19) (0, 19) (-14, 33) (-14, 33) (0, 47)
(1, 47) (14, 34) (14, 32) (1, 19) (-1, 19) (-14, 32) (-14, 34) (-1, 47)
(2, 47) (14, 35) (14, 31) (2, 19) (-2, 19) (-14, 31) (-14, 35) (-2, 47)
(3, 47) (14, 36) (13, 30) (3, 19) (-3, 19) (-13, 30) (14, 36) (-3, 47)
(4, 46) (13, 37) (13, 29) (4, 20) (-4, 20) (-13, 29) (-13, 37) (-4, 46)
(5, 46) (13, 38) (13, 28) (5, 20) (-5, 20) (-13, 28) (-13, 38) (-5, 46)
(6, 46) (13, 39) (12, 27) (6, 20) (-6, 20) (-12, 27) (-13, 39) (-6, 46)
(7, 45) (12, 40) (11, 26) (7, 21) (-7, 21) (-11, 26) (-12, 40) (-7, 45)
(8, 44) (11, 41) (11, 25) (8, 22) (-8, 22) (-11, 25) (-11, 41) (-8, 44)
(9, 44) (11, 42) (10, 24) (9, 22) (-9, 22) (-10, 24) (-11, 42) (-9, 44)
(10, 43) (10, 43) (10, 23) (10, 23) (-10, 23) (-10, 23) (-10, 43) (-10, 43)
2.5. BÀI TẬP TÔ BÓNG

1. Cho tam giác với các đỉnh 𝐴(1,1), B(-1,6), C(5,3). Màu sắc tại các đỉnh lần lượt
là A (R=255, G=255, B=255), B(R=0, G=255, B=0), và C(R=0, G=0, B=255).
Tính màu sắc tại điểm P(3,3) bên trong tam giác sử dụng thuật toán tô bóng
Gouraud.

You might also like