Giáotrình H aMáyTính 69
Sutherland. M i i m hai u mút o n th ng trong hình nh s ư c gán m t mã nh phân4bit, ư cg ilàmãvùng, giúpnh nravùngt a c am t i m.Cácvùng này ư cxâyd ngd atrêns xemxétv i biênc as ,như hình6-8. M iv tríbit trong mãvùng ư cdùng ch ram ttrongb nv trít a tương ngc a i mso v i c a s : bên trái(left), ph i(right), trên nh (top),dư i áy (bottom). Vi c ánh s theov tríbittrongmãvùngt 1 n4chot ph isangtrái, cácvùngt a cóth liênquanv iv tríbitnhưsau:
Hình 5.5: Mã hóa các u mút c a o n th ng
Giátr 1 b tkỳv trínàoch rar ng i m v trítương ng,ngư cl ibit v trí ólà 0. N u m t i m n m trongc a s ,mã v trí là0000. M t i m bêndư i và bêntráic as cómãvùnglà0101.
Cài t minh h a thu t toán mã hóa
byte EncodePoint(Point LeftTop, Point RightBottom, Point P) { byte code = 0; if (P.X < LeftTop.X) { code |= 8; } if (P.X > RightBottom.X) { code |= 4; } if (P.Y < RightBottom.Y) Giáotrình H aMáyTính 70 {
code |= 2; } if (P.Y > LeftTop.Y) { code |= 1; } return code; }
Thu t toán chia nh phân
1. N u E(A)=0và E(B)=0k tlu n AB∩(R)= AB;thu ttoánd ng. 2. N u[E(A)AND E(B)]!=0k tlu n AB∩(R)=∅;k tthúcthu ttoán. 3. N u E(A)=0và E(B) ≠ 0(t c A∈(R)và B∉ (R))th chi n:
a. t C= A, D= B.
b. Trongkhi dài||CD||l nhơn ε t Mlàtrung i mc a o n CD.
N u E(M)=0thìc pnh t C= Mngư cl i D= M. c. K tlu n AB∩(R)= AM;k tthúcthu ttoán.
4. N u E(A)=0và E(B)=0,hoán ivaitròc a Avà B;l pl ibư c3. 5. Ngư cl i,th chi n:
a. t C= A, D= B.
b. Trongkhi dài||CD||l nhơn ε t Mlàtrung i mc a o n CD.
N u E(M) = 0 áp d ng Bư c 3 cho hai o n MC và MD. K t lu n
AB∩(R)= CD;k tthúcthu ttoán.
N u[E(M)AND E(R)]!=0 t C= M.
Giáotrình H aMáyTính 71
N u[E(R)AND E(D)]!=0k tlu n AB∩(R)=∅;k tthúcthu ttoán.
Hình 5.6: Minh h a c a thu t toán chia nh phân.