صفحه 1:
الگوریتم های ترسیم خط
در این مبحث ابتدا در باره اصول ومبانی خط بحث می
شود سپس دو الگوریتم 20069) و 20ه9۳) مورد
بررسی قرار می گیرند
صفحه 2:
مباحث ابندایی خط
y=m-x+b
m= Yond 0
Xend™ %
1- [6- 6
صفحه 3:
صفحه 4:
صفحه 5:
1b gm كردن loa ؟
_ 5; 2S
m= =~
7-2 9
b=2- 342m
۵ 6 ۵ م و و * 5 5
دن مق لا متناظر ag
Peto‘? yg
5. 5.5 اكير 2 4+2 - ِ
3 4 _.4 2 12?
5) =2 544-34 -3
(0100 5 KO) 5 Ors 4.
صفحه 6:
oe
5
sss.
33s
or
5
پیب
0
a ss
مباحث ابندایی خط
صفحه 7:
الگوریتم های رسم خط
؟ در این مبحث دو الگوریتم رسم معرفی وبررسی می شوند
000 a
Oerseckaw 1
صفحه 8:
الگوریتم 000
گام افزایش
ن دو ۳۳ در مرحله بعدی که باید یک ارا انتخاب کنیم
کاس اجان دارد؟
صفحه 9:
الگوریتم 000
هنگامی که شیب بین ۱و۱- است به مختصات ۶ یک
واحد یک واحد و مختصات /براسا س فرمول زیر افزایش
می یابد
Vie 7
(4,41, round(y,+m))
Ge Yd > & +L ym)
۵ round(y,))
صفحه 10:
الگوریتم 000
هنگامی که شیب بین ۱و۱-نیست به مختصات ۷ یک
واحد یک واحد و مختصات براسا س فرمول زیر افزایش
مى يابد
1
وب 22
m
(round(%,+ yn), Yet 1)
5
5
جية) Vow Ket D
@ound(y), Yi)
صفحه 11:
الگوریتم 000
vert har DCD (ty, by vb) {
et deeb
fet pb
et ses, hy
Poa hecrewen, Verret
Plot x0, PV
۳) (< رس ((
زاس سرت
تس
(بهاسدعسسد
0ك
)ریس سار
)مت RODD (x), 0000):
۳-0 سسکا +( {
سس عبر
VAS Verret
setPrel( RODDO(x), ROODO()));
صفحه 12:
Bresedkaw eX 95!
© Ondport Lice Okprikkw
® Oevision variable
d=HM)
1
=H x+Ly,+3
=dx,+1+ y+
Bd>O : chose OC
وت +2 Ip #5
se ۶ 1 : 0 <> ل ۲
= ره : +2 ود سره 5
+
2
صفحه 13:
Bresedkaw eX 95!
ل ا 35
00 دور + (ا+ ميهد +
Prony anes
~ Ax, y) =Aax+ by+ 0
~ d=2at+b
® Opked
X++,
if d>0, then] y++ if d<=0, then |*"”’
mem a cha:
=Aa+D
صفحه 14:
الكوريتم محا 6
( ۱,۱۱ ما0 امن
{
اور
take, hr, READ, ADO, ox, V5
PB (dl> x2)
{
@revertonn( x, YO, xf, vA);
مر
زر
صفحه 15:
Qerscdkaw ps 95!
زب * © د هس
+h Ot de ۱
ابرح بر
Por (= al; <= x) t+)
{
)1 اسهم
(0 > ب) و
۴
هم عدو
الگوریتم های ترسیم خط
در این مبحث ابتدا در باره اصول ومبانی خط بحث می
شود سپس دو الگوریتم DDAو Bresenhamمورد
بررسی قرار می گیرند
1
مباحث ابتدایی خط
y
y mx b
yend
where:
y0
2
x0
xend
x
yend y0
m
xend x0
b y0 mx0
مباحث ابتدایی خط
3
مباحث ابتدایی خط
y
(7, 5)
5
2
4
y = mx +
b y b
x
(2, 2)
2
yend y0
m
xend x0
7
x
m
b y0 mx0
ابتدا پیدا کردن mو : b
)(7, 5
5 2 3
m
7 2 5
3
4
b 2 2
x
5
5
7
برای هر مقدار xپیدا کردن مقدار yمتناظر
3
4
1
y(4) 4 3
5
5
5
3
4
2
y(6) 6 4
5
5
5
y
5
2
)(2, 2
2 3 4 5 6
3
4
3
y(3) 3 2
5
5
5
3
4
4
y(5) 5 3
5
5
5
5
مباحث ابتدایی خط
3
y(3) 2 3
5
1
y(4) 3 3
5
4
y(5) 3 4
5
2
y(6) 4 4
5
7
6
5
4
3
2
1
0
2 3 4 5 6 7 8
1
0
6
الگوریتم های رسم خط
در این مبحث دو الگوریتم رسم معرفی وبررسی می شوند
.i
DDA
.ii
Bersenham
7
الگوریتم DDA
منظور از گام افزایش
یعنی بین دو pixelدر مرحله بعدی که بای00د ی00ک pixelرا انتخ00اب ک00نیم
کدام یک شانس انتخاب دارد ؟
8
الگوریتم DDA
هنگامی که شیب بین 1و -1است به مختصات xیک
واحد یک واحد و مختصات yبراسا س فرمول زیر افزایش
می یابد
yk1 yk m
))(xk+1, round(yk+m
)(xk+1, yk+m
))(xk, round(yk
) (x k , y k
9
الگوریتم DDA
هنگامی که شیب بین 1و -1نیست به مختصات yیک
واحد یک واحد و مختصات xبراسا س فرمول زیر افزایش
می یابد
1
m
xk1 xk
)(round(xk+ 1/m), yk+1
)(xk+ 1/m, yk+1
)(round(xk), yk
) (x k , y k
10
DDA الگوریتم
void line DDA(int xa, int ya, int xb, int yb) {
int dx=xb-xa;
int dy=yb-ya;
int steps, k;
float xIncrement, yIncrement;
float x=xa, y=ya;
if(abs(dx)>abs(dy))
steps=abs(dx);
else
steps=abs(dy);
xIncrement=dx/(float)steps;
yIncrement=dy/(float)steps;
setPixel(ROUND(x), ROUND(y));
for(k=0; k<steps; k++) {
x += xIncrement;
y += yIncrement;
setPixel(ROUND(x), ROUND(y));
}
}
11
Bresenham الگوریتم
Midpoint Line Algorithm
Decision variable
d FM
NE
1
F xp 1, yp
2
1
axp 1 b yp c
2
d > 0 : choose NE
3
dnew F xp 2, yp
12
Q
2
d <= 0 : choose E
1
dnew F xp 2, yp
2
M
P(xp, yp)
E
: dnew= dold+a+b
: dnew= dold+a
Bresenham الگوریتم
Initial Value of d
1
1
F x0 1, y0 ax0 1 b y0 c
2
2
1
Fx0, y0 a b
2
F x, y 2ax by c
d 2a b
13
Update d
x ,
if d 0, then y ,
d 2a b
x ,
if d 0, then
d 2a
Bersenham الگوریتم
void Bresenham(int x1, int y1, int x2, int y2)
{
int slope;
int dx, dy, incE, incNE, d, x, y;
if (x1 > x2)
{
Bresenham(x2, y2, x1, y1);
return;
}
dx = x2 - x1;
dy = y2 - y1;
if (dy < 0)
{
slope = -1;
dy = -dy;
}
else
{
slope = 1;
}
ادامه در صفحه بعد
14
Bersenham الگوریتم
// Bresenham constants
incE = 2 * dy;
incNE = 2 * dy - 2 * dx;
d = 2 * dy - dx;
y = y1;
for (x = x1; x <= x2; x++)
{
putpixel(x, y);
if (d <= 0)
{
d += incE;
}
else
{
d += incNE;
y += slope;
}
}
}
15