Thuật toán Liang-Barsky

Một phần của tài liệu Hướng dẫn làm đồ họa vi tính giáo trình cơ bản (Trang 74 - 77)

M Ở ĐẦU

5.3.4 Thuật toán Liang-Barsky

Một thuật toán tìm giao đoạn thẳng và hình chữ nhật hiệu quả dùng phương trình tham số đã được phát triển bởi Liang và Barsky. Nhận xét rằng hình chữ nhật (R) gồm tập các điểm nằm trong mặt phẳng giới hạn bởi các đường thẳng qua các cạnh giới hạn của nó; tức là:

Phương trình tham số của đoạn AB: P(t) := A + t (B - A) với t [0, 1]. Như vậy bài toán đưa về xác định các giá trị tham số t thỏa hệ các bất phương trình sau:

Hay tương đương : qi pit , i = 0,1, 2, 3. Trong đó :

p0 = dx, q0 = xmin - xA p1 = -dx, q1 = xA - xmax p2 = dy, q2 = ymin - yA p3 = -dy, q3 = yA - yAmax vi dx = xB – xA ; dy = yB – yA.

Nếu tồn tại chỉ sối {0, 1, 2, 3} sao cho pi = 0 và qi > 0 thì hệ bất phương trình trên vô nghiệm ; tức là đoạn thẳng AB giao với hình nhật bằng rỗng. Ngược lại, ta đặt :

t0 := max{0, max{ | pi > 0, i = 0, 1, 2, 3}}

t1 := min{1,min{ | pi < 0, i = 0, 1, 2, 3}}.

Khi đó hệ bất phương trình tương đương với : t0≤ t ≤ t1. Điều này chỉ ra rằng, điều kiện đểđoạn thẳng AB có giao điểm với hình chữ nhật (R) là t0≤ t1 :

Bước 1: Tính pi, qi với i = 0, 1, 2, 3. Bước 2: Khởi tạo i = 0 và t0 = 0, t1 = 1.

Bước 3: Nếu pi = 0 và qi > 0 thì kết luận ; kết thúc thuật toán. Bước 4: Nếu pi > 0 đặt t0 := max{t0, }. Chuyển sang bước 7.

Bước 5: Nếu pi < 0 đặt t1 := min{t1, }. Chuyển sang bước 7. Bước 6: Nếu t0 > t1 thì kết luận ; kết thúc thuật toán.

Bước 7: Nếu i < 3 thay i = i + 1 và lặp lại bước 3; Ngược lại, kết luận

; trong đó :

C = A + t0(B – A)

D = A +t1(B – A) Ví dụ, xét hình chữ nhật :

và hai điểm A(1, -2) và B(10, 9). Ta có phương trình tham số của đoạn thẳng AB là: A + t(B - A). Ta cần giải hệ phương trình:

Hay tương đương :

Vậy

Thuật toán Liang và Barsky giảm bớt các tính toán cần thiết để cắt các đoạn. Mỗi lần cập nhật t0 và t1 chỉ cần một phép chia, và các giao điểm với cửa sổ được tính chỉ

một lần, khi mà các giá trị t0 và t1 vừa hoàn thành. Ngược lại, thuật toán của Cohen- Sutherland lặp lại việc tính giao điểm của đoạn với các biên cửa sổ, và mỗi phép tính giao điểm cần cả hai phép chia và nhân.

Một phần của tài liệu Hướng dẫn làm đồ họa vi tính giáo trình cơ bản (Trang 74 - 77)

Tải bản đầy đủ (PDF)

(120 trang)