Компьютер графикаси


Brezenxeym algoritmi. Kesmaning rastr tasviri



Download 15,78 Mb.
bet42/128
Sana14.07.2022
Hajmi15,78 Mb.
#795608
1   ...   38   39   40   41   42   43   44   45   ...   128
Bog'liq
1 O\'quv qo\'llanma Kompyuter grafikasi (1) (2)

Brezenxeym algoritmi. Kesmaning rastr tasviri.
va nuqtalarini tutashtiruvchi kesmaning rastr tasvirini ko‘rish masalasini ko‘ramiz.
Faraz qilamizki
Berilgan ikki nuqtadan o‘tuvchi to‘g‘ri chiziq tenglamasini tuzamiz:

Unda kesma quyidagi tenglama bilan beriladi:

yoki: bu yerda
,
keyingi qadamga, ya’ni i+1:

di+1 dan di ayiramiz va xi xi-1 =1 ni hisobga olgan holda:

So‘ng, agar bo‘lsa si tanlanadi, u holda yi= yi-1 va di+1= di+2dy .
Aks holda, ya’ni bo‘lsa si tanlanadi, va u holda yi yi-1=1.
.
Shunday qilib biz di+1 ni di ning qiymati orqali hisoblash va si, Ti nuqtalarni tanlash uchun iterativ usulni hosil qildik. Boshlang‘ich holatda di=2dy-dx (x0, y0)=(0,0) ni hisobga olgan holda i=1 da topiladi.
Brezenxeym algoritmi uchun dastur quyidagicha ifodalanadi:

#include


#include
#include

void brezline(int x1,int y1,int x2,int y2,int c)


{
int dx,dy,d,d1,d2,x,y;
dx=x2-x1;
dy=y2-y1;
d=2*dy-dx;
d1=2*dy;
d2=2*(dy-dx);
x=x1;
y=y1;
putpixel(x,y,c);
while (x{
x=x++;
if (d<0) d=d+d1; else
{
y=y++;
d=d+d2;
}
putpixel(x,y,c);
}
}
void main()
{int gd=0,gm;
initgraph(&gd,&gm,"c:\\borlandc\\bgi");
brezline(100,100,200,200,10);
getch();
closegraph();
}

Sohani bo‘yash (rang berish).
Komp’yuter grafikasida soha 2 ta usul bilan berilishi mumkin:
1. Sohani tashkil etuvchi tashqi nuqtalari bilan, ya’ni sohani ichida yotuvchi har bir piksel biror bir rang (oldcolor) bilan beriladi (chegaradagi piksellar bu qiymatga ega emas).
2. Soha chegarasi bilan berilishi mumkin, ya’ni chegaradagi piksellar biror bir rang bilan (bcolor) beriladi (chegara ichidagi piksellar bu qiymatga ega emas). Va shu sababli sohani bo‘yash, algoritmlari ikki turga bo‘linadi.
Bundan tashqari 4 va 8 bog‘lanishlik sohalar uchun algoritmlar mavjud. Ichki oldcolor rang bilan berilgan yangi newcolor rang bilan 4 bog‘lanishlik sohani bo‘yash oddiy rekursiya algoritmini keltiramiz:
function fill4 (int x, int y,int newcolor,int oldcolor)
{
if (getpixel(x,y)==oldcolor)
{
putpixel (x,y,newcolor);
fill4 (x,y-1,newcolor,oldcolor);
fill4 (x,y+1,newcolor,oldcolor);
fill4 (x-1,y,newcolor,oldcolor);
fill4 (x+1,y,newcolor,oldcolor);
} }
function fill4 (int x, int y,int newcolor,int oldcolor)
{
if (getpixel(x,y)==oldcolor)
{
putpixel (x,y,newcolor);
fill4 (x,y-1,newcolor,oldcolor);
fill4 (x,y+1,newcolor,oldcolor);
fill4 (x-1,y,newcolor,oldcolor);
fill4 (x+1,y,newcolor,oldcolor);
}
}
Bu yerda, (x,y) ixtiyoriy sohani ichida yotuvchi nuqta, oldcolor qiymatiga ega piksel.
Chegaradagi rangi bilan berilgan (bcolor) sohani bo‘yash algoritmi quyidagicha:
#include
#include
#include
#include
void floodfill (int x,int y,char BorderColor,char Newcolor)
{
if (getpixel(x,y)!=BorderColor)
{
if(getpixel(x,y)!=Newcolor)
{
putpixel (x,y,Newcolor);
floodfill (x-1,y,BorderColor,Newcolor);
delay (10);
floodfill (x+1,y,BorderColor,Newcolor);
delay (10);
floodfill (x,y-1,BorderColor,Newcolor);
delay (10);
floodfill (x,y+1,BorderColor,Newcolor);
}
}
}
void main()
{int gd=0,gm,errorcode;
initgraph(&gd,&gm,"c:\\borlandc\\bgi");
circle (300,300,20);
floodfill (300,300,15,10);
getch();
closegraph();
}

Bu yerda, (x,y) - sohani ichida yotuvchi biror bir nuqta (piksel), newcolor-bo‘yash rangi.


Keltirilgan algoritmlarni 8 bog‘lanishlik sohalarga 4 ta yo‘nalishni 8 ta yo‘nalishga almashtirish orqali osongina o‘tkazish mumkin.



Download 15,78 Mb.

Do'stlaringiz bilan baham:
1   ...   38   39   40   41   42   43   44   45   ...   128




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish