Th ut toán Liang-Barsky

Một phần của tài liệu giáo trình đồ họa máy tính (Trang 77 - 80)

Giáotrình H aMáyTính 74

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 ih nc anó;t clà:

Phươngtrìnhtham s c a o n AB: P(t):= A + t (B- A)v i t [0, 1]. Như v y bàitoán ưav xác nhcácgiátr thams tth ah cácb tphươngtrìnhsau:

Hayt

ương ương: qipit, i=0,1,2,3.Trong ó:

p 0 =dx, q0 =xmin -xA p 1 =-dx, q1 =xA -xmax p 2 =dy, q2 =ymin -yA p 3 = -dy, q3 =yA -yAmax v idx=x B –xA ;dy=yB –yA.

N ut n t i ch s i {0, 1, 2,3}sao cho pi = 0 và qi > 0 thìh b tphương trình trênvônghi m;t clà o nth ng ABgiaov ihìnhnh tb ngr ng.Ngư cl i,ta t:

t

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

t

1 :=min{1,min{ |pi <0,i=0,1,2,3}}. Khi óh b tphươngtrìnhtương ươngv i:t

0≤t≤t

1. i unàych rar ng, i u ki n o nth ngABcógiao i mv ihìnhch nh t(R)làt

0≤t 1:

T ó,tacóthu ttoánsau:

Giáotrình H aMáyTính 75

Bư c2:Kh it oi=0vàt

0=0,t1=1.

Bư c3:N u pi=0và qi>0thìk tlu n ;k tthúcthu ttoán. Bư c4:N up

i>0 tt0 :=max{t0, }.Chuy nsangbư c7. Bư c5:N up

i<0 tt1 :=min{t1, }.Chuy nsangbư c7. Bư c6:N ut

0 >t1thìk tlu n ;k tthúcthu ttoá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+t 0(B–A) D=A+t 1(B–A) Víd ,xéthìnhch nh t:

vàhai i m A(1, -2)và B(10,9). Tacóphương trìnhthams c a o nth ngABlà: A

+ t(B - A).Tac ngi ih phươngtrình:

Haytương ương:

V y

Suyra,giao i mc a ABvàhìnhch nh tlà o nth ng CD,trong ó:

Thu ttoánLiang vàBarsky gi mb t cáctínhtoánc nthi t c t các o n.M i l n c p nh tt

0và t1ch c n m tphép chia, và cácgiao i mv i c a s ư c tínhch m t l n,khi mà các giá tr t

0 và t1 v a hoàn thành.Ngư c l i, thu t toán c a Cohen- Sutherland l pl ivi ctínhgiao i mc a o nv i cácbiên c as ,và m i phéptính giao i mc nc haiphépchiavànhân. (adsbygoogle = window.adsbygoogle || []).push({});

5.4. Giaoc a o nth ngvà agiácl iVí tr tương i c a m t i m v i o n th ng

Một phần của tài liệu giáo trình đồ họa máy tính (Trang 77 - 80)