Bài giảng đồ họa : Các thuật toán xén điểm, đoạn thẳng part 1 pdf

6 378 2
Bài giảng đồ họa : Các thuật toán xén điểm, đoạn thẳng part 1 pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 1/11 C C a a ù ù c c t t h h u u a a ä ä t t t t o o a a ù ù n n x x e e ù ù n n đ đ i i e e å å m m , , đ đ o o a a ï ï n n t t h h a a ú ú n n g g D D a a ã ã n n n n h h a a ä ä p p • Thao tác loại bỏ các phần hình ảnh nằm ngoài một vùng cho trước được gọi là xén hình. • Vùng được dùng để xén hình gọi là cửa sổ xén (clip window). • Cho cửa sổ hình chữ nhật có tọa độ của các điểm dưới bên trái và điểm trên bên phải lần lượt là ( ) minmin , y x và ( ) maxmax , y x . • Một điểm ( ) y x P , được coi là nằm bên trong cửa sổ nếu thỏa hệ bất phương trình :    ≤≤ ≤≤ maxmin maxmin yyy xxx . • Bây giờ, ta sẽ xét bài toán xén đoạn thẳng được cho bởi hai điểm ( ) 111 , y x P và ( ) 222 , y x P vào cửa sổ hình chữ nhật trên. (a) Window P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 (b) Window P 1 P 2 P' 5 P' 6 ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 2/11 V V a a á á n n đ đ e e à à t t o o á á i i ư ư u u h h o o ù ù a a t t o o á á c c đ đ o o ä ä • Ý tưởng chung : ♦ Đối với các đoạn thẳng đặc biệt như nằm hoàn toàn trong hoặc hoàn toàn bên ngoài cửa sổ (ví dụ như đoạn P 1 P 2 và P 3 P 4 trong hình trên) : không cần phải tìm giao điểm. ♦ Đối với các đoạn thẳng có khả năng cắt cửa sổ : cần phải đưa ra cách tìm giao điểm nhanh. • Nhận xét ♦ Các đoạn thẳng mà có cả hai điểm nằm hoàn toàn trong cửa sổ thì cả đoạn thẳng nằm trong cửa sổ, đây cũng chính là kết quả sau khi xén (ví dụ như đoạn thẳng P 1 P 2 ), mặt khác đối với các đoạn thẳng mà có hai điểm nằm về cùng một phía của cửa sổ thì luôn nằm ngoài cửa sổ và sẽ bò mất sau khi xén (ví dụ như đoạn thẳng P 3 P 4 ). ♦ Với các đoạn thẳng có khả năng cắt cửa sổ (ví dụ như đoạn thẳng P 5 P 6 và P 7 P 8 ) để việc tìm giao điểm nhanh cần rút gọn việc tìm giao điểm với những biên cửa sổ không cần thiết để xác đònh phần giao nếu có của đoạn thẳng và cửa sổ. • Người ta thường sử dụng phương trình tham số của đoạn thẳng trong việc tìm giao điểm giữa đoạn thẳng với cửa sổ. ( ) ( ) 10 , , , 121121 121121 ≤≤−=+=−+= −=+=−+= tyyDytDyyyytyy x x Dx tDx x x x t x x • Nếu giao điểm ứng với giá trò t nằm ngoài đoạn [ ] 1 , 0 thì giao điểm đó sẽ không thuộc về cửa sổ. ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 3/11 T T h h u u a a ä ä t t t t o o a a ù ù n n C C o o h h e e n n - - S S u u t t h h e e r r l l a a n n d d • Kéo dài các biên của cửa sổ, ta chia mặt phẳng thành chín vùng gồm cửa sổ và tám vùng xung quanh nó. • Khái niệm mã vùng (area code) ♦ Một con số 4 bit nhò phân gọi là mã vùng sẽ được gán cho mỗi vùng để mô tả vò trí tương đối của vùng đó so với cửa sổ. ♦ Bằng cách đánh số từ 1 đến 4 theo thứ tự từ phải qua trái, các bit của mã vùng được dùng theo quy ước sau để chỉ một trong bốn vò trí tương đối của vùng so với cửa sổ bao gồm : trái, phải, trên, dưới. Ví dụ : Bit 1 : trái (LEFT) Bit 2 : phải (RIGHT) Bit 3 : trên (TOP) Bit 4 : dưới (BOTTOM) ♦ Giá trò 1 tương ứng với vò trí bit nào trong mã vùng sẽ chỉ ra rằng điểm đó ở vò trí ương ứng, ngược lại bit đó sẽ được đặt bằng 0. ♦ Các giá trò bit trong mã vùng được tính bằng cách xác đònh tọa độ của điểm ( ) y x , thuộc vùng đó với các biên của cửa sổ. Bit 1 được đặt là 1 nếu min x x < , các bit khác được tính tương tự. 0100 Window 01100101 0001 1001 0010 10101000 0000 1234 LEFT RIGHT TOP BOTTOM TOP LEFT RIGHT BOTTOM ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 4/11 T T h h u u a a ä ä t t t t o o a a ù ù n n • Gán mã vùng tương ứng cho các điểm đầu cuối 21 , P P của đoạn thẳng cần xén lần lượt là 21 , c c . Ta có nhận xét : ♦ Các đoạn thẳng nằm hoàn toàn bên trong cửa sổ sẽ có 0000 21 == c c , ứng với các đoạn này, kết quả sau khi xén là chính nó. ♦ Nếu tồn tại 4 , 1 ∈ k , sao cho với bit thứ k của 21 , c c đều có giá trò 1, lúc này đoạn thẳng sẽ nằm về cùng phía ứng với bit k so với cửa sổ, do đó nằm hoàn toàn ngoài cửa sổ. Đoạn này sẽ bò loại bỏ sau khi xén. Để xác đònh tính chất này, đơn giản chỉ cần thực hiện phép toán logic AND trên 21 , c c . Nếu kết quả khác 0000, đoạn thẳng sẽ nằm hoàn toàn ngoài cửa sổ. ♦ Nếu 21 , c c không thuộc về hai trường hợp trên, đoạn thẳng có thể hoặc không cắt ngang cửa sổ, chắc chắn sẽ tồn tại một điểm nằm ngoài cửa sổ, không mất tính tổng quát giả sử điểm đó là 1 P . Bằng cách xét mã vùng của 1 P là 1 c ta có thể xác đònh được các biên mà đoạn thẳng có thể cắt để từ đó chọn một biên và tiến hành tìm giao điểm ' 1 P của đoạn thẳng với biên đó. Lúc này, đoạn thẳng ban đầu được xén thành ' 11 P P . Sau đó chúng ta lại lặp lại thao tác đã xét cho đoạn thẳng mới ' 11 P P cho tới khi xác đònh được phần nằm trong hoặc loại bỏ toàn bộ đoạn thẳng. ♦ Các điểm giao với các biên cửa sổ của đoạn thẳng có thể được tính từ phương trình tham số. Ví dụ : tung độ y của điểm giao đoạn thẳng với biên đứng của cửa sổ có thể tính từ công thức ( ) 11 x x m y y −+= , trong đó x có thể là min x hay max x . ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 5/11 Lưu đồ thuật toán Cohen - Sutherland // Đoạn CT tính mã vùng void EnCode(POINT p, CODE &c, RECT rWin) { c = 0; if(p.x < rWin.Left) c |= LEFT; if(p.x > rWin.Right) c |= RIGHT; if(p.y > rWin.Top) c |= TOP; if(p.y < rWin.Bottom) c |= BOTTOM; } Begin EnCode(P1,c1); EnCode(P2,c2) (c1!=0000) || (c2!=0000) Yes (c1&c2 == 0000) Yes Xác đònh giao điểm của đoạn thẳng với biên của cửa sổ bằng cách xét mã vùng của điểm nằm ngoài cửa sổ No No End ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 6/11 T T h h u u a a ä ä t t t t o o a a ù ù n n L L i i a a n n g g - - B B a a r r s s k k y y • Thuật toán Liang-Barsky được phát triển dựa vào việc phân tích dạng tham số của phương trình đoạn thẳng. ( ) ( ) 10 , , , 121121 121121 ≤≤−=+=−+= −=+=−+= tyyDytDyyyytyy x x Dx tDx x x x t x x • Ứng với mỗi giá trò t, ta sẽ có một điểm P tương ứng thuộc đường thẳng. ♦ Các điểm ứng với 1 ≥ t sẽ thuộc về tia P 2 x. ♦ Các điểm ứng với 0 ≤ t sẽ thuộc về tia P 2 x’. ♦ Các điểm ứng với 1 0 ≤ ≤ t sẽ thuộc về đoạn thẳng 21 P P . • Tập hợp các điểm thuộc về phần giao của đoạn thẳng và cửa sổ ứng với các giá trò t thỏa hệ bất phương trình :      ≤≤ ≤+≤ ≤+≤ 10 max1min max1min t ytDyyy x tDx x x P1(x1, y1) P 2 (x 2 , y 2 ) t=0 t=1 t>1 x x' t<0 . tương tự. 010 0 Window 011 0 010 1 00 01 10 01 0 010 10 1 010 00 0000 12 34 LEFT RIGHT TOP BOTTOM TOP LEFT RIGHT BOTTOM ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 4 /11 T T h h u u a a ä ä t t . nếu có của đoạn thẳng và cửa sổ. • Người ta thường sử dụng phương trình tham số của đoạn thẳng trong việc tìm giao điểm giữa đoạn thẳng với cửa sổ. ( ) ( ) 10 , , , 12 112 1 12 112 1 ≤≤−=+=−+= −=+=−+= tyyDytDyyyytyy x x Dx tDx x x x t x x •. thức ( ) 11 x x m y y −+= , trong đó x có thể là min x hay max x . ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Các thuật toán xén hình 5 /11 Lưu đồ thuật toán Cohen - Sutherland // Đoạn CT tính

Ngày đăng: 23/07/2014, 21:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan