Transcript ****** 1
فصل سوم
الگوریتم های ترسیم
1
S. POORKIANI
ترسیم خط :مقدمه
در این مبحث ابتدا در باره اصول ومبانی خط بحث می شود سپس دو الگوریتم
DDAو Bresenhamمورد بررس ی قرار می گیرند.
y
y mxb
yend
where:
y end y 0
x end x 0
m
b y 0 m x0
2
y0
x
xend
S. POORKIANI
x0
مقدمه:ترسیم خط
: شیب ها
m=∞
m=4
m=2
m = -4
m = -2
m=1
m = -1
m = 1/2
m = -1/2
m = -1/3
m = 1/3
m=0
m=0
S. POORKIANI
3
مقدمه:ترسیم خط
y
m
(7, 5)
5
y end y 0
x end x 0
y = mx + b
2
x
(2, 2)
2
7
x
S. POORKIANI
yb
m
b y 0 m x0
4
ترسیم خط :مقدمه
ابتدا پیدا کردن mو : b
3
5
4
52
72
2
5
3
)(7, 5
)(2, 2
1
5
2
55
3
4
5
4
5
4
6
5
3
5
2
b 2
برای هر مقدار xپیدا کردن مقدار yمتناظر:
4
5
m
5
3
y
x
3
y (4)
y (6)
S. POORKIANI
7
2
5
6
4
4
3
3
3
5
5
5
4
4
3
5
3
5
5
5
2
y (3)
y (5)
5
مقدمه:ترسیم خط
y (3) 2
7
6
5
y (4) 3
4
3
y (5) 3
2
1
0
0
1
2
3
4
5
6
7
8
S. POORKIANI
y (6) 4
3
5
1
5
4
5
2
2 .6 3
3 .2 3
3 .8 4
4 .4 4
5
6
ترسیم خط:
در این مبحث دو الگوریتم رسم معرفی وبررس ی می شوند:
.i
.ii
7
DDA
Bersenham
S. POORKIANI
ترسیم خط :الگوریتم DDA
منظور از گام افزایش:
یعنی بین دو pixelدر مرحله بعدی که باید یک pixelرا انتخاب کنیم ،کدام یک
شانس انتخاب دارد ؟
8
S. POORKIANI
ترسیم خط :الگوریتم DDA
-1هنگامی که شیب بین 1و -1است به مختصات ، xیک واحد یک واحد و
مختصات yبراساس فرمول زیر افزایش می یابد:
y k 1 y k m
))(xk+1, round(yk+m
)(xk+1, yk+m
))(xk, round(yk
9
S. POORKIANI
)(xk, yk
ترسیم خط :الگوریتم DDA
-2هنگامی که شیب بین 1و -1نیست( ،شیب تند) .به مختصات ، yیک واحد
یک واحد و مختصات xبراساس فرمول زیر افزایش می یابد:
1
m
x k 1 x k
)(round(xk+ 1/m), yk+1
)(xk+ 1/m, yk+1
10
)(round(xk), yk
S. POORKIANI
)(xk, yk
m=(2-1)/(8-1) = (1/7)
(8,2)
: مثال
(1,1)
X
y
Round(y)
1
1
1
2
1+(1/7)=1.14
1
3
1.14+(1/7)=1.28
1
4
1.28+(1/7)=1.42
1
5
1.42+(1/7)=1.57
2
6
1.57+(1/7)=1.71
2
7
1.71+(1/7)=1.85
2
8 S. POORKIANI
1.85+(1/7)=1.99
2
11
ترسیم خط :الگوریتم برزنهام
Jack Bresenhamایده ترسیم
خط و دایره را با محاسبه ضربها و
توانهای کمتر در اوایل دهه 1950
ارائه کرد و با استقبال زیادی روبرو
شد.
برزنهام در اين الگوريتم فقط از
افزايش ها و کاهش هاي
مقاديرصحيح استفاده ميکند و درگیر
محاسبات اعشاری نمیشود.
12
S. POORKIANI
الگوریتم برزنهام:ترسیم خط
y – y0 = m (x - x0 ) ax + by +c =0
Midpoint Line Algorithm
NE
Decision variable
d F M
1
F x p 1, y p
2
Q
M
P(xp, yp)
E
1
a x p 1 b y p c
2
d > 0 : choose NE
d <= 0 : choose E S. POORKIANI
13
الگوریتم برزنهام:ترسیم خط
Initial Value of d
1
1
F x0 1, y0 a x0 1 b y0 c
2
2
Update d
x ,
if d 0, then y ,
d 2a b
S. POORKIANI
x ,
if d 0, then
d 2 a
14
ترسیم خط :الگوریتم برزنهام
m=(3-0)/(6-1) = 0.6
)(6,3
)(1,0
15
S. POORKIANI
ترسیم خط------------:
براي رسم خط چين ها:
روش اول :خط از ابتدا تا انتها رسم مي شود در ترسيم دوباره خط چین ها به رنگ
پس زمينه مي شود (روش نا کارامد ).
روش دوم :ابتدا و انتهاي خط را محاسبه و به چندين خط تقسيم و خطوط کوچکتر
ترسيم مي گردند .در اين روش بخاطر عدم ترسيم مناطق خالي زمان ذخیره مي
شود).
16
S. POORKIANI
ترسیم دایره :خواص دایره
دایره به صورت مجموعه نقاطی که همگی در فاصله داده شده rاز نقطه مرکز
) (xc,ycقرار دارند تعریف می شود.
برای هر نقطه (X,Y) ،روی دایره با رابطه فیثاغورث به صورت رابطه زیر
تعریف می شود:
)(x,y
2
y yc r
2
2
x xc
ө
r
y
c
xc
17
S. POORKIANI
ترسیم دایره :خواص دایره
از معادله فیثاغورث می توان برای محاسبه نقاط روی محیط دایره با برداشن
گامهایی به طول واحد در روی محور xها از r-xcتا r+xcو محاسبه مقادیر y
استفاده کرد :
2
r x xc
2
y yc
ایرادات این روش :
-1نیازمند محاسبات زیاد
-2شکل دایره دارای عدم تقارن می باشد .
18
S. POORKIANI
ترسیم دایره :خواص دایره
راه دیگر برای رسم دایره می توان از معادله دایره به صورت قطبی استفاده کرد که به
صورت زیر می باشد :
x x c r cos
y y c r sin
از این معادالت برای تولید دایره می توان با اندازه گام زاویه ای ثابت استفاده کرد.
اما استفاده از این معادالت جهت ایجاد دایره به خاطر معادالت مثلثاتی زمان گير می
باشد.
19
S. POORKIANI
ترسیم دایره
برای هر کدام از روشهای گفته شده می توان با در نظر گرفتن خاصیت تقارنی دایره
محاسبات را کاهش داد.
20
S. POORKIANI
ترسیم دایره
21
با این حال باز هم محاسبات برای رسم دایره زمان زیادی را می گیرد !
در معادله اول محاسبات ضرب و جذر و در معادله دوم ضرب و محاسبات
مثلثاتی زمان گیر است.
با این حال الگوریتم کارآمدتری برای دایره با محاسبات افزاینده پارامترهای
تصمیم مانند الگوریتم خط برزنهام ارائه شده اند.
الگوریتم دایره برزنهام با مقایسه مربعات فواصل پیکسلها از این محاسبات
پیچیده اجتناب می کند .
S. POORKIANI
ترسیم دایره :برزنهام
براي دايره با معادله fcircle(x,y)= y2+x2-r2 ، y2+x2=r2را در نظر بگیريد،
22
S. POORKIANI
ترسیم دایره :برزنهام
براي انتخاب يکي از دو نقطه :
اگر Pk<0باشد آنگاه نقطه داخل دايره
است.
اگر Pk>0باشد آنگاه نقطه خارج دايره
است.
23
S. POORKIANI
ترسیم دایره :برزنهام
هدف اين است که همه محاسباتمان را افزايش ي انجام دهيم،
در مورد نقطه Sو Tداریم:
از آنجاييکه ) f(Sهمیشه مثبت و ) f(Tهمیشه منفی است ،متغیر dرا به صورت زیر
تعریف می کنیم:
24
S. POORKIANI
ترسیم دایره :برزنهام
با توجه به مقدار dبدست آمده خواهيم داشت :
25
S. POORKIANI
ترسیم دایره :برزنهام
ترسیم دایره به روش نقطه میانی به شعاع r=10رسم کنید .
شروع از X=0و y=10
26
S. POORKIANI
S. POORKIANI
27
ترسیم بیض ی
به کمک تعريف چند جمله اي بيض ي :
در اين روش:
28
S. POORKIANI
ترسیم بیض ی
S. POORKIANI
29
ترسیم بیض ی
= 1
(y-k)2
b2
+
(x-h)2
a2
اگر مرکز ،مبدا مختصات باشد:
h=0 , k=0
y2
= 1
2
b
+
x2
a2
b2 x2 + a2 y2= b2 a2
30
S. POORKIANI
در هر مرحله به xها اضافه میشود و در
صورت لزوم از yها کم می کنیم.
ترسیم بیض ی
y
m > -1
m < -1
b
x
a
در هر مرحله از yها کم میشود و در
صورت لزوم به xها اضافه می کنیم.
31
S. POORKIANI
ترسیم مستطیل
32
S. POORKIANI