230 likes | 837 Views
گرافیک 1. فصل ششم الگوریتم های برش. مقدمه. در این فصل به معرفی و بررسی چند الگوریتم برش زنی خط و اشکال می پردازیم، که به طور کلی شامل دو دسته اند: برش زنی خطوط الگوریتم Cohen-Sutherland الگوریتم Liang- Barsky برش زنی اشکال الگوریتم Sutherland- Hodgman
E N D
گرافیک 1 فصل ششم الگوریتم های برش S. POORKIANI
مقدمه • در این فصل به معرفی و بررسی چند الگوریتم برش زنی خط و اشکال می پردازیم، که به طور کلی شامل دو دسته اند: • برش زنی خطوط • الگوریتم Cohen-Sutherland • الگوریتم Liang-Barsky • برش زنی اشکال • الگوریتم Sutherland-Hodgman • الگوریتم Weiler Atherton S. POORKIANI
مثال S. POORKIANI
مثال S. POORKIANI
مثال S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland (Xmax, Ymin) (Xmin, Ymin) (Xmin, Ymax) (Xmax, Ymax) S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland منطقه شماره بیت S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland اگر YA<Ymin یعنی بیت چهارم (تقاطع بالا) 1 و در غیر این صورت 0 است. (Xmax, Ymin) (Xmin, Ymin) 1001 1010 1000 اگر XA>Xmax یعنی بیت دوم (تقاطع راست) 1 و در غیر این صورت 0 است. 0001 0000 0010 اگر XA<Xmin یعنی بیت اول (تقاطع چپ) 1 و در غیر این صورت 0 است. 0101 0100 0110 (Xmin, Ymax) (Xmax, Ymax) اگر YA>Ymax یعنی بیت سوم (تقاطع پایین) 1 و در غیر این صورت 0 است. S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland • اگر نتیجه OR کدهای بیتی دو راس انتهایی و ابتدایی خط برابر 0000 باشد یعنی دو سر خط در محدوده پنجره قرار دارد و برشی صورت نمی گیرد. • اگر 0000 نشد، آنها را با هم AND می کنیم. اگر نتیجه مخالف 0 شود یعنی کل خط خارج از محدوده دید است و هیچ خطی رسم نمیشود. • اگر نتیجه AND برابر با 0 شود حداقل یک سر خط بیرون از پنجره است. ممکن است هر دو سر خط بیرون از پنجره باشند. ولی حتما قسمتی از خط داخل محدوده دید است. S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland • یکی از رئوس را به دلخواه انتخاب می کنیم، اگر خارج از محدوده بود، نقطه تقاطع خط با مرز پنجره دید را پیدا می کنیم و این نقطه جدیدرا جایگزین نقطه خارج از محدوده می کنیم. • برای تشخیص مرز، کافیست کدچهاربیتی راس مورد نظر را بررسی نمود. 1001 1010 1000 0001 0000 0010 0101 0100 0110 S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland • اگر نقطه تقاطع روی مرز چپ یا راست باشد و دو راس آغاز و پایان خط(x1 , y1) و (x2 , y2) باشند و شیب خط m باشد، مختصات نقطه تقاطع (xt , yt) عبارتست از: xt= Xmin (چپ) یاxt = Xmax (راست) yt= y1 + m(xt - x1 ) S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland • اگر نقطه تقاطع روی مرز بالا یا پایین باشد و دو راس آغاز و پایان خط(x1 , y1) و (x2 , y2) باشند و شیب خط m باشد، مختصات نقطه تقاطع (xt , yt) عبارتست از: yt= Ymin (بالا) یاyt = Ymax (پایین) xt= x1 + (yt - y1 )/m S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland 1001 1010 1000 0001 0000 0010 0101 0100 0110 S. POORKIANI
الگوریتم برش خط: Cohen-Sutherland • مثال: • (x1 , y1)=(220 , 70) • (x2 , y2)=(50 , 240) • Xmin , Ymin = 100 S. POORKIANI