Tài liệu Bài giảng Xén hình: CHNG III
XÉN HÌNH
3.1. T VN
Cho mt min D ⊂ Rn và F là mt hình trong Rn (F ⊂ Rn). Ta gi F ∩ D là hình có
c t F bng cách xén vào trong D và ký hi u là ClipD(F).
Bài toán
t ra là xác nh ClipD(F).
3.2. XÉN ON THNG VÀO VÙNG HÌNH CH NH
T CA R2
3.2.1. Cnh c
a hình ch nht song song vi các trc ta
Lúc này:
D =
≤≤
≤≤
∈
maxmin
maxmin
|),( 2
YyY
XxX
Ryx
và F là on th
ng ni 2 im (x1,y1), (x2,y2) nên phng trình ca F là:
x x x x t
y y y y t
= + −
= + −
1 2 1
1 2 1
( ).
( ).
t ∈ [0,1]
Do ó, F có th c vit di dng:
F = {(x,y) ∈ R2 | x = x1 + (x2 -x1).t; y = y1 + (y2 -y1).t; 0 ≤ t ≤ 1}
Khi ó, giao im ca F và D chính là
nghi m ca h bt phng trình (theo t):
Xmin x1+ (x2 - x1). t Xmax
Ymin 1+ (y2 - y1). t max
0 t 1
≤ ≤
≤ ≤
≤ ≤
y Y
Gi N là tp nghi m ca h phng trình
trên.
Nu N = ∅ thì ClipD(F) = ∅
Nu N ≠ ∅ thì N = [t1, t2] (t1 ≤ ...
9 trang |
Chia sẻ: hunglv | Lượt xem: 1760 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Xén hình, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHNG III
XÉN HÌNH
3.1. T VN
Cho mt min D ⊂ Rn và F là mt hình trong Rn (F ⊂ Rn). Ta gi F ∩ D là hình có
c t F bng cách xén vào trong D và ký hi u là ClipD(F).
Bài toán
t ra là xác nh ClipD(F).
3.2. XÉN ON THNG VÀO VÙNG HÌNH CH NH
T CA R2
3.2.1. Cnh c
a hình ch nht song song vi các trc ta
Lúc này:
D =
≤≤
≤≤
∈
maxmin
maxmin
|),( 2
YyY
XxX
Ryx
và F là on th
ng ni 2 im (x1,y1), (x2,y2) nên phng trình ca F là:
x x x x t
y y y y t
= + −
= + −
1 2 1
1 2 1
( ).
( ).
t ∈ [0,1]
Do ó, F có th c vit di dng:
F = {(x,y) ∈ R2 | x = x1 + (x2 -x1).t; y = y1 + (y2 -y1).t; 0 ≤ t ≤ 1}
Khi ó, giao im ca F và D chính là
nghi m ca h bt phng trình (theo t):
Xmin x1+ (x2 - x1). t Xmax
Ymin 1+ (y2 - y1). t max
0 t 1
≤ ≤
≤ ≤
≤ ≤
y Y
Gi N là tp nghi m ca h phng trình
trên.
Nu N = ∅ thì ClipD(F) = ∅
Nu N ≠ ∅ thì N = [t1, t2] (t1 ≤ t2)
Gi P, Q là 2 giao im xác nh bi:
xMin xMax X
y
yMax
yMin
A
B
P
Q
Hình 3.1
Chng III. Xén hình
33
Px x x x t
Py y y y t
= + −
= + −
1 2 1 1
1 2 1 1
( ).
( ).
Qx x x x t
Qy y y y t
= + −
= + −
1 2 1 2
1 2 1 2
( ).
( ).
thì: ClipD(F) = PQ (Hình 3.1)
3.2.1.1. Thut toán Cohen - Sutherland
• Chia m
t ph
ng ra làm 9 vùng, mi vùng ánh mt mã nh phân 4 bit (hình 3.2).
Bit 1: Qui nh vùng nm bên trái ca s
Bit 2: Qui nh vùng nm bên phi ca s
Bit 3: Qui nh vùng nm bên di ca s
Bit 4: Qui nh vùng nm bên trên ca s
• Xét im P ∈ R2 :
Pleft =
<
laûi Ngæåüc0
minP nãúu x X1
PRight =
>
laûi Ngæåüc0
maxP nãúu x X1
PBelow =
<
laûi Ngæåüc0
minP nãúu y Y1
PAbove =
>
laûi Ngæåüc0
maxP nãúu y Y1
• Xét on th
ng AB, ta có các trng hp sau:
i/ Nu Mã(A) = Mã(B) = 0000 thì AB ∈ D ClipD(F) = AB
ii/ Nu Mã(A) AND Mã(B) ≠ 0000 thì on AB nm hoàn toàn bên ngoài hình
ch nht ClipD(F) = ∅
Chú ý: Phép toán AND là phép toán Logic gia các bit.
iii/ Nu (Mã(A) AND Mã(B) = 0000) và (Mã(A) ≠ 0000 ho
c Mã(B) ≠ 0000) thì:
Gi s Mã(A) ≠ 0000 ⇔ A nm ngoài hình ch nht.
♦ Nu Aleft = 1 : thay A bi im nm trên on AB và ct cnh trái (ni dài)
ca hình ch nht.
100
0
000
0
101
0
001
0
011
0
010
0
010
1
000
1
100
1
Hình 3.2
Chng III. Xén hình
34
♦ Nu Aright = 1: thay A bi im nm trên on AB ct cnh phi (ni dài) ca
hình ch nht.
♦ Nu ABelow = 1: thay A bi im nm trên on AB và ct cnh di (ni
dài) ca hình ch nht.
♦ Nu AAbove = 1: thay A bi im nm trên on AB và ct cnh trên (ni
dài) ca hình ch nht.
Chú ý: Quá trình này c l
p li: Sau mi ln l
p, ta phi tính li mã ca A.
Nu cn, phi i vai trò ca A và B m bo A luôn luôn nm bên ngoài hình ch
nht. Quá trình s dng khi x y ra mt trong 2 trng hp: i/ ho
c ii/
3.2.1.2. Thut toán chia nh phân
• Ý tng ca thut toán này tng t! nh thut toán tìm nghi m bng phng pháp
chia nh phân.
• Mnh : Cho M: trung im ca on AB, Mã(A) ≠ 0000, Mã(B) ≠ 0000, Mã(M)
≠ 0000 thì ta có:
[Mã(A) AND Mã(M)] ≠ 0000
hoc [Mã(M) AND Mã(B)] ≠ 0000.
Ý ngha hình hc c
a mnh : Nu c ba im A, B, M
u ngoài hình ch
nh
t thì có ít nht mt on hoàn toàn nm ngoài hình ch nh
t.
• Ta phát tho thut toán nh sau:
i/ Nu Mã(A) = 0000 và Mã(B) = 0000 thì ClipD(F) = AB
ii/ Nu Mã(A) AND Mã(B) ≠ 0000 thì ClipD(F) = ∅
iii/ Nu Mã(A) = 0000 và Mã(B) ≠ 0000 thì:
P:=A; Q:=B;
Trong khi |xP -xQ| + |yP - yQ| ≥ 2 thì:
♦ Ly trung im M ca PQ;
♦ Nu Mã(M) ≠ 0000 thì Q:= M.
Chng III. Xén hình
35
Ngc li: P:= M.
ClipD(F) = AP
iv/ Nu Mã(A) ≠ 0000 và Mã(B) = 0000 thì: "i vai trò ca A, B và áp d#ng ii/
v/ Nu Mã(A) ≠ 0000 ≠ Mã(B) và [Mã(A) AND Mã(B)]= 0000 thì:
P:=A; Q:=B;
Ly M: trung im PQ;
Trong khi Mã(M) ≠ 0000 và |xP - xQ| + |yP - yQ| ≥ 2 thì:
♦ Nu Mã(M) AND Mã(Q) ≠ 0000 thì Q:=M. Ngc li P:=M.
♦ Ly M: trung im PQ.
Nu Mã(M) ≠ 0000 thì ClipD(F) = ∅ . Ngc li, áp d#ng ii/ ta có:
ClipD(MA) = MA1
ClipD(MB) = MB1
Suy ra: Clip
D
(F) = A
1
B
1
3.2.1.3. Thut toán Liang - Barsky
"
t ∆x = x2 - x1 ∆y = y2 - y1
p1 = - ∆x q1 = x1 - xMin
p2 = ∆x q2 = xMax - x1
p3 = - ∆y q3 = y1 - yMin
p4 = ∆y q4 = yMax - y1
thì h bt phng trình giao im ca F và D có th vit li:
≤≤
=≤
1..4k ,Q.tP kk
10 t
Xét các trng hp sau:
i/ ∃k: Pk = 0 và Qk < 0: ( "ng th
ng song song vi các biên và nm ngoài vùng
hình ch nht )
Chng III. Xén hình
36
ClipD(F) = ∅
ii/ ∀k ∈ {1,2,3,4}: Pk ≠ 0 ho
c Qk ≥ 0:
"
t K1 = {k | Pk > 0 }
K2 = {k | Pk < 0 }
u1 = Max({
k
k
P
Q
| k ∈ K2} ∪ {0})
u2 = Min({
k
k
P
Q
| k ∈ K1} ∪ {1})
Nu u1 > u2 thì ClipD(F) = ∅
Ngc li: Gi P, Q là 2 im th$a
∆+=
∆+=
1
1
1
1
uyyPy
uxxPx
.
.
và
∆+=
∆+=
2
2
1
1
uyyQy
uxxQx
.
.
thì ClipD(F) = PQ
3.2.2. Khi cnh c
a vùng hình ch nht to vi trc hoành mt góc α∈(0,Π/2)
Ta dùng phép quay tr#c ta a bài toán v trng hp các cnh ca hình
ch nht song song vi các tr#c ta (hình 3.3).
Gi R là ma trn quay ca phép i tr#c, ta có:
X
Y
min
min
= R.
X
Y
min
min
X
Y
max
max
= R.
X
Y
max
max
vi R =
cos( ) sin( )
sin( ) cos( )
α α
α α−
α
x O
y
Hình 3.3
Chng III. Xén hình
37
3.3. XÉN ON THNG VÀO HÌNH TRÒN
Gi s ta có ng tròn tâm O(xc,yc) bán kính R và on th
ng cn xén là AB vi
A(x1,y1), B(x2,y2) (Hình 3.4).
* Thut toán:
• Tính d(O,AB)
• Xét các trng hp:
i/ Nu d > R thì ClipD(F) = ∅
ii/ Nu d = R thì ClipD(F) = A0 vi A0 là
chân ng vuông góc h t O xung AB.
iii/ Nu d < R thì xét các trng hp sau:
♦ (OA < R) AND (OB < R) thì ClipD(F) = AB
♦ Nu mt im nm trong và im kia nm ngoài hình tròn, ch%ng hn
OAR thì ClipD(F) = AI vi I là giao im duy nht gia AB
và ng tròn.
♦ (OA > R) AND (OB > R) thì ClipD(F) = IJ vi I, J là hai giao im ca
AB vi ng tròn.
Sau ây là phng pháp tìm giao im gia on th
ng và ng tròn:
Phng trình ng tròn: (x - xc)2 + (y - yc)2 = R2 (1)
Phng trình on AB:
≤≤
−+=
−+=
10
).12(1
).12(1
λ
λ
λ
yyyy
xxxx
(2)
Thay (2) vào (1) ta suy ra: λ =
b
bcaa −±−
2
Trong ó:
a = ∆x.(x1 - xc) + ∆y.(y1 - yc)
b = (∆x)2 + (∆y)2
c = (x1 - xc)
2 + (y1 - yc)2 - R2
A
B
Hình 3.4
Chng III. Xén hình
38
∆x = x2 - x1
∆y = y2 - y1
D!a vào iu ki n 0 ≤ λ ≤ 1 chn giao im.
3.4. XÉN NG TRÒN VÀO HÌNH CH NH
T CÓ CÁC CNH SONG
SONG VI TRC TA
Lúc này:
D = {(x,y)| xMin ≤ x ≤ xMax ; yMin ≤ y ≤ yMax }
F = { (x,y)| (x - xC)
2 + (y - yC)
2 = R2}
*Trc ht, ta kim tra các trng hp
c bi t sau:
i/ Nu xMin ≤ xC -R; xC +R ≤ xMax;
yMin ≤ yC -R; yC +R ≤ yMax;
thì ClipD(F) = F (Hình 3.5)
ii/ Nu xC +R < xMin
ho
c xC -R > xMax
ho
c yC +R < yMin
ho
c yC - R > yMax
thì ClipD(F) = ∅ (Hình 3.6)
*Xét trng hp còn li: Tìm các giao im ca F và D. Sp xp các giao im ó
theo chiu ngc kim &ng h&.
• Các cung tròn c to bi 2 giao im liên tip s hoàn toàn nm trong D
ho
c hoàn toàn nm bên ngoài D.
• " xác nh các cung này nm trong hay ngoài D, ta ch' cn ly trung im
M ca cung ó. Nu M ∈ D thì cung ó nm trong D, ngc li thì nó nm
ngoài D.
Hình
3.5
Hình
3.6
Chng III. Xén hình
39
3.5. XÉN A GIÁC VÀO HÌNH CH NH
T
Hình 3.7. Xén a giác vào hình ch nh
t
Thut toán SutherLand - Hodgman
i/ Nu tt c các 'nh ca a giác u nm trong hình ch nht thì hình cn xén
chính là a giác và bài toán coi nh ã c gii quyt.
Hình 3.8. Các trng hp cn xét
ii/ Trng hp ngc li:
- Xut phát t mt 'nh nm ngoài hình ch nht, ta chy theo dc biên ca a
giác. Vi mi cnh ca a giác, ta có các trng hp sau:
Nu c hai 'nh u nm ngoài hình ch nht thì:
Nu Ma(Ai) and Ma(Ai+1) ≠ 0000 thì không lu 'nh
Ngc li thì lu hai giao im.
Ai ngoài, Ai+1 trong: lu giao im P và Ai+1.
C hai 'nh u nm trong hình ch nht: lu Ai và Ai+1.
Ai trong, Ai+1 ngoài: lu Ai và giao im P.
Ai
Ai
+
Ai
+
Ai
Ai
Ai
+
Ai
+
Ai
Ai
Ai
+
Chng III. Xén hình
40
- Sau khi duy t qua tt c các cnh ca a giác thì ta có c mt dãy các 'nh mi
phát sinh: B1, B2, ..., Bn
Nu trong dãy các 'nh mi này có hai 'nh liên tip không nm trên cùng mt
cnh ca hình ch nht , gi s hai 'nh ó là Bi và Bi+1 thì ta i dc các cnh ca hình
ch nht t Bi n Bi+1 tìm tt c các 'nh ca hình ch nht nm trong a giác r&i
b sung chúng vào gia Bi và Bj.
Tp 'nh mi tìm c chính là a giác xén c.
- Nu tp 'nh mi này là rng: Nu có mt 'nh ca hình ch nht nm trong a
giác thì hình xén c chính là toàn b hình ch nht. Ngc li, hình xén c là
rng.
BÀI T
P
1. Vit hàm MA(P:ToaDo):Byte; ánh mã cho im P.
2. Cài
t thut toán xén mt on th
ng vào mt hình ch nht theo các thut toán:
Liang-Barsky, Cohen-Sutherland, chia nh phân.
3. Cài
t thut toán xén mt on th
ng vào mt hình tròn.
4.Cài
t thut toán xén mt a giác vào mt vùng hình ch nht.
Các file đính kèm theo tài liệu này:
- _giaotrinhlythuyetdohoach3.pdf