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