Transcript ****** 1
فصل ششم
الگوریتم های برش
1
S. POORKIANI
مقدمه
در این فصل به معرفی و بررس ی چند الگوریتم برش زنی خط و اشکال
پردازیم ،که به طور کلی شامل دو دسته اند:
.1برش زنی خطوط
.1
.2
الگوریتم Cohen-Sutherland
الگوریتم Liang-Barsky
.2برش زنی اشکال
.1
.2
2
الگوریتم Sutherland-Hodgman
الگوریتم Weiler Atherton
S. POORKIANI
می
مثال
S. POORKIANI
3
مثال
S. POORKIANI
4
مثال
S. POORKIANI
5
Cohen-Sutherland :الگوریتم برش خط
(Xmax, Ymin)
(Xmin, Ymin)
(Xmin, Ymax)
(Xmax, Ymax)
S. POORKIANI
6
Cohen-Sutherland :الگوریتم برش خط
منطقه
Top
Bottom
Right
Left
4
3
2
1
شماره بیت
S. POORKIANI
7
Left
Right
Bottom
Top
الگوریتم برش خطCohen-Sutherland :
اگر YA<Yminیعنی بیت چهارم (تقاطع باال) 1و در غیر این صورت 0است.
)(Xmax, Ymin
1010
)(Xmin, Ymin
1001
1000
اگر XA>Xmaxیعنی بیت دوم (تقاطع راست) 1و در غیر این صورت 0است.
0010
0001
0000
اگر XA<Xminیعنی بیت اول (تقاطع چپ) 1و در غیر این صورت 0است.
0110
)(Xmax, Ymax
0100
)(Xmin, Ymax
0101
اگر YA>Ymaxیعنی بیت سوم (تقاطع پایین) 1و در غیر این صورت 0است.
8
S. POORKIANI
الگوریتم برش خطCohen-Sutherland :
اگر نتیجه ORکدهای بیتی دو راس انتهایی و ابتدایی خط برابر 0000باشد یعنی
دو سر خط در محدوده پنجره قرار دارد و برش ی صورت نمی گیرد.
اگر 0000نشد ،آنها را با هم ANDمی کنیم .اگر نتیجه مخالف 0شود
یعنی کل خط خارج از محدوده دید است و هیچ خطی رسم نمیشود.
اگر نتیجه ANDبرابر با 0شود حداقل یک سر خط بیرون از پنجره است .ممکن
است هر دو سر خط بیرون از پنجره باشند .ولی حتما قسمتی از خط داخل محدوده
دید است.
9
S. POORKIANI
الگوریتم برش خطCohen-Sutherland :
یکی از رئوس را به دلخواه انتخاب می کنیم ،اگر خارج از محدوده بود ،نقطه تقاطع
خط با مرز پنجره دید را پیدا می کنیم و این نقطه جدیدرا جایگزین نقطه خارج از
محدوده می کنیم.
1010
1000
برای تشخیص مرز ،کافیست کد
چهاربیتی راس مورد نظر را
0010
بررس ی نمود.
0000
0001
0110
0100
0101
10
Left
Right
Bottom
Top
1
2
3
4
S. POORKIANI
1001
الگوریتم برش خطCohen-Sutherland :
اگر نقطه تقاطع روی مرز چپ یا راست باشد و دو راس آغاز و پایان خط
) (x1 , y1و ) (x2 , y2باشند و شیب خط mباشد ،مختصات نقطه تقاطع
) (xt , ytعبارتست از:
)راست( xt = Xmax
یا
)چپ( xt = Xmin
) yt = y1 + m(xt - x1
11
S. POORKIANI
الگوریتم برش خطCohen-Sutherland :
اگر نقطه تقاطع روی مرز باال یا پایین باشد و دو راس آغاز و پایان خط
) (x1 , y1و ) (x2 , y2باشند و شیب خط mباشد ،مختصات نقطه تقاطع
) (xt , ytعبارتست از:
)پایین( yt = Ymax
یا
)باال( yt = Ymin
xt = x1 + (yt - y1 )/m
12
S. POORKIANI
Cohen-Sutherland :الگوریتم برش خط
1001
1000
1010
0001
0000
0010
0101
0100
0110
S. POORKIANI
13
Cohen-Sutherland :الگوریتم برش خط
: مثال
(x1 , y1)=(220 , 70)
(x2 , y2)=(50 , 240)
Xmin , Ymin = 100
S. POORKIANI
14