You are on page 1of 15

Thuật toán vẽ đường thẳng:

• Giả sử ở bước thứ i đã xác định được điểm (xi,yi)


• Gọi điểm Q(xi+1,y) là điểm thuộc đường thẳng
• Vì y = mx + b nên điểm Q sẽ có tọa độ Q(xi + 1, m(xi + 1) + b)
• Bước i + 1, ta xác định điểm (xi+1, yi+1) dựa vào dấu d1 – d2.
• Nếu d1 – d2 < 0  d1 < d2 , thì chọn điểm S(xi + 1, yi)
• Nếu d1 – d2 >= 0  d1>= d2 , thì chọn điểm P(xi + 1,yi + 1)
• Tính: d1 = y – yi = m(xi + 1) + b – yi
d2 = (yi + 1) – y = yi + 1 – m(xi + 1) – b
• Nên d1 – d2 = 2mxi – 2yi + 2m + 2b – 1

VẼ ĐOẠN THẲNG
 Xét đoạn có hệ số góc 0<=m<=1  Xét đoạn có hệ số góc m>1
- Bresenham - Bresenham
B1: xác định 2 điểm S và P P(xi+1, yi), S(xi+1, B1: xác định 2 điểm S và P P(xi, yi+1), S(xi+1,
yi+1) yi+1)
B2: xác định d1 và d2 B2: xác định d1 và d2

Ta có d1=y - yi =m (xi + 1) + b - yi Ta có d1=x - xi =m (yi + 1) + b - xi


d2=(yi+1)-y =yi +1-m(xi + 1)-b d2=(xi+1)-x =xi +1-m(yi + 1)-b

B3: xác định D =d1-d2 để chọn S/P B3: xác định D =d1-d2 để chọn S/P

B4: xác định pi = Dx(d1-d2) B4: xác định pi = Dy(d1-d2)

B5: xác định pi+1= pi + 2Dy-2Dx(yi+1- yi) B5: xác định pi+1= pi + 2Dx-2Dy(xi+1- xi)

Xét dấu pi Nếu pi<0, chọn yi+1= yi ta có pi+1 = Xét dấu pi Nếu pi<0, chọn xi+1= xi ta có pi+1 =
pi+2Dy pi+2Dx
Nếu pi>=0 chọn yi+1= yi +1 ta có pi+1 = pi + Nếu pi>=0 chọn xi+1= xi +1 ta có pi+1 = pi +
2(Dy-Dx) 2(Dx-Dy)
B6: Vậy giá trị p1= 2Dy-Dx B6: Vậy giá trị p1= 2Dx-Dy
 Xét đoạn có hệ số góc -1<m<0  Xét đoạn có hệ số góc m<-1
- Bresenham B1: xác định 2 điểm S và P S(xi, yi+1), P(xi-1,
B1: xác định 2 điểm S và P S(xi+1, yi), P(xi+1, yi+1)
yi-1) B2: xác định d1 và d2
B2: xác định d1 và d2
Ta có d1=x - xi =m(yi + 1) + b - xi
Ta có d1=y - yi =m(xi + 1) + b - yi d2=(xi-1)-x =xi -1-m(yi + 1)-b
d2=(yi-1)-y =yi -1-m(xi + 1)-b
B3: xác định D =d1-d2 để chọn S/P
B3: xác định D =d1-d2 để chọn S/P
B4: xác định pi = Dy(d1-d2)
B4: xác định pi = Dx(d1-d2)
B5: xác định pi+1= pi + 2Dx -3Dy(xi+1-xi)
B5: xác định pi+1= pi + 2Dy -3Dx(yi+1-yi) Xét dấu pi Nếu pi<0 thì xi+1=xi tức pi+1=
Xét dấu pi Nếu pi<0 thì yi+1=yi tức pi+1= pi+2Dx
pi+2Dy Nếu pi>=0 thì xi+1= xi -1 tức pi+1 = pi +
Nếu pi>=0 thì yi+1= yi -1 tức pi+1 = pi + 2Dx+2Dy
2Dy+2Dx B6: Vậy giá trị p1= 2Dx+Dy
B6: Vậy giá trị p1= 2Dy+Dx
Ma trận biến đổi 2D:

1. Phép tịnh tiến:


Ví dụ: Tìm điểm tịnh tiến của điểm P(x = 5,y =5) với vector (độ dời) tịnh tiến T = [10,20]
y
Q

ty
P
tx
O x
Tọa độ mới của điểm P là điểm Q(x’,y’), với:

[ x' y ]=[ 5 5 ] ×
'
[ ]
1 0
0 1
+ [ 10 20 ]

[ x' y ]=[ 5 5 ] + [ 10 20 ] =[ 15 25 ]
'

Vậy tọa độ của P sau khi tịnh tiến là Q(15,25)


2. Phép tỉ lệ :

Ví dụ trường hợp 1: Phép biến đổi tỷ lệ với tâm tỷ lệ gốc tọa độ


Xét tam giác ABC có A(5,5) B(10,10) và C(15,15). Hãy thực hiện thay đổi tỷ lệ với hệ số tỷ lệ
sx, = 5 sy = 10
• Xét điểm A(5,5) thì A’ sau khi biến đổi tỷ lệ có tọa độ là:

[ x' y' ] =[ x y ] ×
[ ]
sx 0
0 sy
=[ 5 5 ] ×
5 0
[ ]
0 10
=[ 25 50 ]

• Xét điểm B(10,10) thì B’ sau khi biến đổi tỷ lệ có tọa độ là:

[ x' y' ] =[ x y ] ×
[ ]
sx 0
0 sy
=[ 10 10 ] ×
[ ]
5 0
0 10
=[ 50 100 ]

• Tương tự, điểm C(15,15) thì C’ sau khi biến đổi tỷ lệ có tọa độ là:

[0 10 ]
[ x' y' ] =[ 15 15 ]× 5 0 = [75 150 ]

Vậy tam giác ABC sau khi thay đổi tỷ lệ là A’B’C’ với A’(25,50), B’(50,100), C’(75,150)
Vẽ hai hình trên cùng một hệ tọa độ
Ví dụ trường hợp 2: Phép biến đổi tỷ lệ với tâm tỷ lệ là điểm T(tx,ty):

[ x' y' ] =([ x y ]− [ t x t y ] )×


[ ]
Sx 0
0 Sy
+[ t x t y ]
3. Phép quay :
Trường hợp 1: Phép quay điểm P(x,y) quanh gốc tọa độ một góc 

x'=rCos(φ+θ )=rCos φ Cosθ−rSin φSinθ


y'=rSin( φ+θ )=rSin φ cosθ+rCos φ Sinθ
Q(x', y')
Đặt :

x=r cosφ , y=rsin φ


r
Suy ra :
r P(x, y)
x'=xCosθ− ySinθ
y'=xSinθ + yCosθ
Biểu diễn dưới dạng ma trận:

[−Sinθ
[ x' y ' ] =[ x y ] × Cos θ Sinθ
Cos θ ]
Trường hợp 2: Phép quay quanh điểm T(tx,ty) một góc 

[ ]
[ x' y ' ] =( [ x y ] −[ t x t y ])× Cos θ Sinθ +[ t x t y ]
y
−Sinθ Cos θ
Q

Q’
P

P’
T
x
O

4. Phép biến đổi ngược :


Với phép biến đổi affine, ta có: Q = P x M + T  P = (Q - T) x M-1
Trong đó:
M=
[ ] a b
c d
Suy ra:

M −1=
1
[
d −b
ad−bc −c a ] khi (ad-bc0)

 Phép tịnh tiến: trừ x và y đi 1 lượng tx và ty.


 Phép biến đổi tỷ lệ:

M −1=
1 sy 0
[ ][
sx s y 0 s x
=
1/ s x 0
0 1/ s y ]
 Phép quay:

M −1=
[ Cos α −Sinα
Sin α Cos α ]

Ma trận biến đổi 3D:


• Phép biến đổi affine 3D biến điểm P(x,y,z) thành Q(x’, y’, z’) có dạng: Q = P x M

• M là ma trận biến đổi. Có dạng:

( )
a b c 0
d e f 0
M=
g h i 0
j k k 1

1. Phép tịnh tiến :


Ma trận biến đổi tịnh tiến:
( )
1 0 0 0
M= 0 1 0 0 y
0 0 1 0
tr x tr y tr z 1 Q(x’,y’,z’)
P(x,y,z)

2. Phép đổi xứng qua mặt phẳng xy:

( )
1 0 0 0
0 1 0 0 z x
M=
0 0 −1 0
0 0 0 1
3. Phép đổi xứng qua mặt phẳng xz:

( )
1 0 0 0
0 −1 0 0
M=
0 0 1 0
0 0 0 1
4. Phép đổi xứng qua mặt phẳng zy:

( )
−1 0 0 0
0 1 0 0
M=
0 0 1 0
0 0 0 1
5. Phép đổi xứng qua gốc tọa độ:

( )
−1 0 0 0
0 −1 0 0
M=
0 0 −1 0
0 0 0 1
6. Phép biến đổi tỷ lệ với tâm gốc tọa độ O(0,0,0) :
Ma trận biến đổi của phép biến đổi tỷ lệ y
( )
sx 0 0 0
0 sy 0 0
M=
0 0 sz 0
0 0 0 1

sx, sy, sz là hệ số tỷ lệ theo các trục x, y, z


Khi sx= sy= sz =s gọi là phép đồng dạng.
Trong phép biến đổi này, gốc O sẽ là ảnh chính nó và là tâm của phép biến đổi tỷ lệ

7. Phép biến đổi tỷ lệ với tâm (x0, y0, z0) :


Tịnh tiến tâm (x0, y0, z0) về gốc tọa độ O(0,0,0).
Biến đổi tỷ lệ có tâm gốc tọa độ O(0,0,0).
Tịnh tiến ngược từ tâm O(0,0,0) về tâm ban đầu
 Ma trận của phép biến đổi tỷ lệ tâm (x0, y0, z0) như sau:

( )( )( )
1 0 0 0 sx 0 0 0 1 0 0 0
M= 0 1 0 0 × 0 sy 0 0
× 0 1 0 0
0 0 1 0 0 0 sz 0 0 0 1 0
−x 0 − y 0 −z 0 1 0 0 0 1 x0 y0 z0 1

( )
sx 0 0 0
0 sy 0 0
M=
0 0 sz 0
(1−s x )x 0 (1−s y ) y 0 (1−s z ) z 0 1

8. Phép quay quanh trục tọa độ :


Ký hiệu ma trận biểu diễn phép quay quanh trục x , y , z một góc  là R(x, ), R(y, ), R(z, ) :
Quay quanh trục x:

( )
1 0 0 0
0 cosα sin α 0
R( x, α )=
0 −sin α cos α 0
0 0 0 1
Quay quanh trục y:
( )
cosα 0 −sin α 0
0 1 0 0
R( y , α )=
sin α 0 cosα 0
0 0 0 1
Quay quanh trục z:

( )
cos α sin α 0 0
−sin α cos α 0 0
R( z ,α )=
0 0 1 0
0 0 0 1

Ví dụ bài tập biến đối 3D:


Bài 1: Cho vật thể 3D có tọa độ các điểm A (0, 3, 1), B (3, 3, 2), C (3, 0, 0), D (0, 0, 0). Hãy vẽ
ảnh của vật thể ABCD sau khi thực hiện phép tịnh tiến với khoảng cách 1 đối với trục X, 1 đối
với trục Y và 2 đối với trục Z.
• Giải:
• Tọa độ cũ của đối tượng = A (0, 3, 1), B (3, 3, 2), C (3, 0, 0), D (0, 0, 0)
• Vectơ tịnh tiển = (T x , T y , T z ) = (1, 1, 2)
• Đối với các tọa độ A (0, 3, 1)
•  Cho tọa độ mới của A = (X mới , Y mới , Z mới ).
•  Áp dụng các phương trình tịnh tiến, ta có
• X mới = X cũ + T x = 0 + 1 = 1
• Y mới = Y cũ + T y = 3 + 1 = 4
• Z mới = Z cũ + T z = 1 + 2 = 3
• Như vậy, tọa độ mới của A = (1, 4, 3).
• Đối với tọa độ B (3, 3, 2)
•  Cho tọa độ mới của B = (X mới , Y mới , Z mới )
•  Áp dụng các phương trình tịnh tiến, ta có
• X mới = X cũ + T x = 3 + 1 = 4
• Y mới = Y cũ + T y = 3 + 1 = 4
• Z mới = Z cũ + T z = 2 + 2 = 4
•  Như vậy, tọa độ mới của B = (4, 4, 4).
• Đối với tọa độ C (3, 0, 0)
•  Cho tọa độ mới của C = (X mới , Y mới , Z mới ).
•  Áp dụng các phương trình tịnh tiến, ta có
• X mới = X cũ + T x = 3 + 1 = 4
• Y mới = Y cũ + T y = 0 + 1 = 1
• Z mới = Z cũ + T z = 0 + 2 = 2
•  Như vậy, tọa độ mới của C = (4, 1, 2).

• Đối với tọa độ D (0, 0, 0)


•  Cho tọa độ mới của D = (X mới , Y mới , Z mới ).
•  Áp dụng các phương trình tịnh tiến, ta có
• X mới = X cũ + T x = 0 + 1 = 1
• Y mới = Y cũ + T y = 0 + 1 = 1
• Z mới = Z cũ + T z = 0 + 2 = 2
•  Như vậy, tọa độ mới của D = (1, 1, 2).
Bài 2: Cho điểm đồng nhất (1, 2, 3). Áp dụng xoay 90 độ đối với trục X, Y và Z và tìm ra các
điểm tọa độ mới..
• Giải:
• Từ tọa độ cũ = (X cũ , Y cũ , Z cũ ) = (1, 2, 3)
• Góc quay = θ = 90º
• Đối với Xoay trục X-
•  Gọi tọa độ mới sau khi quay = (X mới , Y mới , Z mới ).
•  Áp dụng các phương trình quay, chúng ta có-
• X mới = X cũ = 1
• Y mới = Y cũ x cosθ - Z cũ x sinθ = 2 x cos90 ° - 3 x sin90 ° = 2 x 0 - 3 x 1 = -3
• Z mới = Y cũ x sinθ + Z cũ x cosθ = 2 x sin90 ° + 3 x cos90 ° = 2 x 1 + 3 x 0 = 2
•  Như vậy, tọa độ mới sau khi quay = (1, -3, 2).
• Đối với quay trục Y-
•  Gọi tọa độ mới sau khi quay = (X mới , Y mới , Z mới ).
•  Áp dụng các phương trình quay, chúng ta có-
• X mới = Z cũ x sinθ + X cũ x cosθ = 3 x sin90 ° + 1 x cos90 ° = 3 x 1 + 1 x 0 = 3
• Y mới = Y cũ = 2
• Z mới = Y cũ x cosθ - X cũ x sinθ = 2 x cos90 ° - 1 x sin90 ° = 2 x 0 - 1 x 1 = -1
•  Như vậy, tọa độ mới sau khi quay = (3, 2, -1)
• Đối với xoay trục Z-
•  Gọi tọa độ mới sau khi quay = (X mới , Y mới , Z mới ).
•  Áp dụng các phương trình quay, chúng ta có-
• X mới = X cũ x cosθ - Y cũ x sinθ = 1 x cos90 ° - 2 x sin90 ° = 1 x 0 - 2 x 1 = -2
• Y mới = X cũ x sinθ + Y cũ x cosθ = 1 x sin90 ° + 2 x cos90 ° = 1 x 1 + 2 x 0 = 1
• Z mới = Z cũ = 3
• Như vậy, tọa độ mới sau khi quay = (-2, 1, 3)

Khử mặt khuất :


Vd: Trong không gian 3D, cho hình chóp SABC với S(0,0,10), A(0,-4,0), B(5,0,0), C(0,7,0). Giả
sử mắt nhìn đặt tại E(30,20,20). Xác định các mặt thấy, khuất của hình chóp này.
SA SB

SAB
SAC
SBC
ACB
Ta có 4 mặt phẳng của hình chóp SAB, SBC, SCA và ABC
Xét mặt phẳng SAB
Véctơ pháp tuyến N của SAB là tích có hướng của 02 vec tơ SA và SB
SA = (0,-4,-10) và SB = (5,0,-10)
a a −4 −10 a a 0 −10 a a 0 −4
n x=| y z |=| |=40 n y=−| x z |=−| |=−50 n z =| x y |=| |=20
b y b z 0 −10 bx bz 5 −10 bx by 5 0
 Véc tơ phép tuyến N là tích có hướng là: (nx,ny,nz) = (40,-50,20).
Ta có Véctơ SE = (30,20,10)
Tính tích vô hướng của véc tơ N và SE = 40x30-50x20+20x10=40>0:SAB mặt nhìn thấy
Xét mặt phẳng SBC
Véctơ pháp tuyến N của SBC là tích có hướng của 02 vec tơ SB và SC
SB = (5,0,-10) và SC = (0,7,-10)
a a 0 −10 a a 5 −10 a a 5 0
n x=| y z |=| |=70 n y=−| x z |=−| |=50 n z =| x y |=| |=35
b y b z 7 −10 bx bz 0 −10 bx by 0 7
 Véc tơ phép tuyến N là tích có hướng là: (nx,ny,nz) = (70,50,35).
Ta có Véctơ SE = (30,20,10)
Tính tích vô hướng của véc tơ N và SE=70x30+50x20+35x10=3450>0: SBC mặt nhìn thấy
Tương tự tính các mặt phẳng SCA và ABC

Tô bóng :
1. Kỹ thuật tô bóng Lambert :
Tia sáng
Gọi:
Tia sáng chiếu vào đối tượng tại P
Góc giữa tia sáng và véctơ pháp n là  n Nguồn
Véctơ đơn vị của tia phản xạ L sáng
Áp dụng định luật phản xạ ánh sáng của Lambert:
L
Bức xạ lý tưởng của tia sang P
I = Iskd cos 
Is - cường độ điểm nguồn
kd - hệ số phản xạ có giá trị trong khoảng [0..1]
 nguồn sáng môi trường : I = Iaka+ Iskd cos 
 khoảng cách giữa đối tượng và nguồn sáng :
I s k d cos θ
I =I a k a +
d2

Ia - cường độ
ka - tham số của ánh sáng môi trường
D - khoảng cách từ nguồn sáng tới vật thể
 Với nguồn sáng môi trường và nhiều nguồn sáng:
m m
I j k d cos θ j I j k d (i j L j )
I=I a k a + ∑ = I a k a+ ∑
j=1 D2j j=1 D2j
Ia = cường độ của ánh sáng môi trường

Ij= cường độ của ánh sáng nguồn


Ví dụ:
Cho ba điểm A(0,0,1), B(1,0,0) và C(0,1,0) và nguồn sáng có cường độ là 9
đặt tại khoảng cách xa theo hướng:

( √2,3,4)
Xác định cường độ bức xạ lý tưởng tô bóng với hệ số phản chiếu là 0.25
2. Kỹ thuật tô bóng Gauraud:
Phương pháp này nội suy cường độ sáng của các điểm trên biên và sau đó là các điểm trên mặt
đang xét.
Gọi 1(x1, y1) , 2(x2, y2), 3(x3, y3) lần lượt là hình chiếu của 3 đỉnh A, B, C tạo nên một mặt của
đối tượng. Giả sử cường độ sáng tại các đỉnh A, B, C lần lượt là I1, I2, I3
Ta có: Y
y4− y2 y 1− y 4 3
I 4 =I 1 +I2
y1− y2 y 1− y 2 1

Tương tự:

4 6 5

Ví dụ: 2
X
Mặt phẳng chữ nhật tạo bởi A(0,0), B(1,0), C(1,1) và D(0,1).
Tính cường độ phản chiếu tại điểm P(0.5, 0.5) bằng kỹ thuật tô bóng Gauraud. Cường độ trung
bình của ánh sáng phản chiếu tại bốn đỉnh là:
IA=8, IB=9, IC=2, ID=4

3. Kỹ thuật tô bóng Phong :


Ví dụ: Tính cường độ ánh sáng tô cho điểm M trong tứ giác ABCD

ND NC
NP NQ
D

NA M C
P
Q
NB
B

Giải:
Tính véctơ pháp tuyến tại các đỉnh A, B, C, D
Tính cường độ ánh sáng tại các đỉnh này
Nội suy véctơ pháp tuyến tại P và Q
 Nếu P chia AD theo tỷ lệ m (AP/PD=m) và Q chia BC theo tỷ lệ n (BQ/QC=n)
thì véctơ pháp tuyến tại P và Q sẽ là
NP = m NA + (1-m) ND
NQ = n NB + (1-n) NC

 Nếu M chia PQ với tỷ số x (MP/MQ=x) thì: NM = x NP + (1-x) NQ


NM = x (m.NA + (1-m) ND)+ (1-x)(n.NB + (1-n) NC)
= x n.NA + x(1-m) ND+ n(1-x)NB + (1-x)(1-n)NC
 Tính độ sáng tô theo véctơ pháp tuyến NM

You might also like