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