Таълим жараёнини компьютер технологиялари асосида ташкил этишнинг дастурий таъминоти


Grafik funksiyalar. Ekranning grafik holatida koordinalar sistemasi quyi-dagi ko’rinishda bo’ladi



Download 0,61 Mb.
bet3/3
Sana01.01.2022
Hajmi0,61 Mb.
#300845
1   2   3
Bog'liq
11-ma'ruza

Grafik funksiyalar. Ekranning grafik holatida koordinalar sistemasi quyi-dagi ko’rinishda bo’ladi:

  • Paletra (ranglar majmuasi)
  • Ekranning grafik tartibida 640*480*16 o’lchovi-dan ko’proq foydalaniladi. Bu yerda 640 x o’qi bo’yicha nuqtalar soni, 480 y o’qi bo’yicha nuqtalar soni, 16 grafik tartibida ishlatiladigan ranglar soni. graphics.h faylida standart paletraning ranglariga mos o’zgarmaslar ishlatiladi:
  • O’zgarmas nomi
  • rang
  • O’zgarmasning qiymati
  • BLACK
  • qora
  • 0
  • BLUE
  • Ko’k
  • 1
  • GREEN
  • Yashil
  • 2
  • CYAN
  • Lojivard
  • 3
  • RED
  • qizil
  • 4
  • MAGENTA
  • Binafsha
  • 5
  • BROWN
  • Jigarrang
  • 6
  • LIGHTGRAY
  • Och kulrang
  • 7
  • DARKGRAY
  • To’q kulrang
  • 8
  • LIGHTBLUE
  • Och ko’k
  • 9
  • LIGHTGREEN
  • Och yashil
  • 10
  • LIGHTCYAN
  • Och lojivard
  • 11
  • LIGHTRED
  • Och qizil
  • 12
  • LIGHTMAGENTA
  • Och binafsha
  • 13
  • YELLOW
  • Sariq
  • 14
  • WHITE
  • Oq
  • 15
  • Ekran nuqtasi
  • Grafik ekran bir qancha nuqta (piksel) lar majmua-sidan iborat bo’lib, har nuqta o’z koordinasiga va rangiga ega bo’ladi. (x,y) koorditanali color rangli nuqta ekranda quyidagi funksiya orqali beriladi: putpixel (x, y, color); - bu yerda x,y –nuqtaning koordinasi, color-rang.
  • (x,y) koordinali nuqtaning rangini aniqlash uchun getpixel (int x, int y); funksiya ishlatiladi.
  • getmaxx - joriy rejim va drayverlar uchun nuqtalar sonini aniqlash; getmaxy - joriy rejim va drayverlar uchun vertikal nuqtalar soni. Bu prosedura yordamida kompyuterning o’zi ekrandagi maksimal nuqtalar sonini aniqlaydi.
  • Kontur figuralar
  • Tekislikda chiziqlar guruhi kontur (yopiq) figuralarni ho-sil qiladi. Kontur figuralar sifatida to’g’ri chiziq bo’lagi, yoy, aylana, ellips, to’g’ri to’rtburchak va hokasolarni qarash mumkin. Bu figuralar bir-biridan korinishidan tashqari chiziqning rangi, turi va qalinligi bilan farq qiladi.

Grafik tartibida avtomatik holda chiziqning rangi- WHITE (oq), qalinligi – bir piksel, turi – yaxlit chiziq qilib o’rnatiladi. Chiziq rangini o’zgartirish setcolor( color); funksiyasi orqali bajariladi. Setbkcolor(color) fon rangini o’rna-tish. Figuraning boshqa parametrlari quyidagi funksiya orqali beriladi: setlinestyle ( linestyle, upattern, thickness); bu yerda linestyle – chiziq turi, thickness – uning qalinligi. Chiziqning turi 5 xil bo’lishi nunkin:

  • qiymat
  • nomi
  • tavsifi
  • 0
  • SOLID_LINE
  • yaxlit
  • 1
  • DOTTED_LINE
  • punktirli
  • 2
  • CENTER_LINE
  • shtrix-punktirli
  • 3
  • DASHED_LINE
  • shtrixli
  • 4
  • USERBIT_LINE
  • Foydalanuvchi tomonidan aniqlanadigan tur ( upattern)
  • Kontur chiziqlarini parametrlari o’rnatil-gandan keyin ekranda figuralarni hosil qilishga kirishamiz. Buning uchu standart grafik kutubxonasida mavjud bo’lgan funksiyalardan foydalanamiz. Bu funk-siyalar quyidagilardan iborat.
  • Funksiya nomi
  • Tavsiflanishi
  • Line( x1, y1, x2,t y2);
  • Ekranda (x1, y1) koordinatali nuqtadan (x2, y2) koordi-natali nuqtagacha to’g’ri chiziqni hosil qiladi.
  • rectangle(x1, y1, x2,y2);
  • Ekranda gorizontal (vertikal) joylashgan to’ri to’rtburchakni hosil qiladi, bu yerda yukori chap nuqtaning koordinatalari (x1,y1), o’ng pastki nuqtaning koordina-lari (x2,y2) hisoblanadi.
  • linerel (x, y) -
  • x va y koordinatali nuqtadan joriy nuktagacha kesma chizish;
  • lineto (x, y)
  • joriy nuqtadan x va y koordinatali nuqtaga-cha kesma chizish;
  • Funksiya nomi
  • Tavsiflanishi
  • circle( x, y,R;
  • markazi (x, y) nuqtada va radiusi R ga teng bo’lgan aylana chizadi (o’lchov birligi piksel)
  • arc (x, y, a, b, r);
  • markazi (x, y) nuqtada va radiusi r ga teng bo’lgan yoy chizadi, bu yerda x va y - markazning koordinatalari, a - bosh burchak, b - oxirigi burchak, r - yoy radiusi. Burchaklar gradusda qabul qilinadi va u soat strelkasiga teskari tartibda hisobga olinadi. Agar a=0, b=360 bo’lsa to’liq aylana hosil bo’ladi.
  • ellipse (x, y, a, b, xr, yr);
  • xuddi shu tartibda ellips yoyini chizadi.
  • drawpoly (n, p);
  • ko’pburchak hosil qiladi.. Bu yerda n – ko’p-burchakning uchlari soni; p - ko’pburchak uchlarining koordinatalari.
  • bar3D (x1, y1, x2, y2, h, top);
  • - parallelopiped chizadi. Bu yerda h – paral-lelopipedning uzunligi; top - yuqori qismini chizish uchun kerak. Agar topon – bo’lsa tomi bor, agar topoff - bo’lsa tomi yo’q

Tekis figuralar Tekis figuralar ekran tekisligining yopiq kontur bilan che-garalangan qimidan iborat bo’ladi. Tekis figuralarni kontur hosil qiluvchi ichki sohasini yoki yopiq chiziqlar tashqarisini bo’yash orqali yasash mumkin. Bunda chiziqlar uzluksiz bo’lishi shart. Bu amal quyidagi funksiya yordamida bajariladi: floodfill( x, y, border); Bu yerda x и y – kontur ichida yoki tashqarisida joylashgan nuqta koordinatasi, border – kontur hosil qiluvchi chiziq rangi. Bunda to’liq konturning rangi bir xil bo’lishi lozim. Bo’yash color rang bilan va pattern shabloni bo’yicha quyidagi-cha bajariladi: setfillstyle ( pattern, color);

  • Tekis figuralarni hosil qilish eng ko’p ishlatiladigan figura-lar quyidagilar hisoblanadi:
  • Funksiya nomi
  • tavsiflanish
  • bar (x1, y1, x2, y2)
  • joriy rang va chiziqlar yordamida ichi bo’yalgan to’gri to’rtburchak chizadi, bu yerda yuqori chap nuqtaning koordinatalari (x1,y1), o’ng pastki nuqtaning koordinalari (x2,y2) hisoblanadi.
  • fillellipse (x, y, xr, yr)
  • joriy rang va chiziqlar yordamida markazi (x,y) nuqtada mos ravishda gorizontal va vertikal o’qlari xr va yr ( xr-kenglik, yr- balandlik) ga teng bo’lgan ichi bo’yalgan rangli ellips chizadi.
  • fillepoly (n,XY);
  • yopiq konturdan iborat ko’pburchakni chizadi va uni bo’yaydi, bu yerda n – burchaklar soni, XY – ko’pburchak burchaklarning koordinatalari.
  • pieslice(x, y, a, b, r)
  • markazi (x, y) nuqtada va radiusi R ga teng bo’lgan sektor chizadi va uni bo’yaydi, bu yerda x va y - markazning koordinatalari, a - bosh burchak, b - oxirigi burchak, r - yoy radiusi. Burchaklar gradusda qabul qilinadi va u soat strelkasiga teskari tartibda hisobga olinadi

#include #include int main() { int dr=DETECT,md; initgraph(&dr,&md,""); for (int i=1;i<=9;i++) { setcolor(i); circle(300,400-i*30,60-i*5); setfillstyle(1,i); floodfill(300,400-i*30,i); } return 0; }

  • 1-misol.Turli rangdagi aylanalar hosil qilish

2-misol.Turli figuralarni har xil ranglarda hosil qilish #include #include # include int main ( ) { int i, j, gd, gm ; gd=0; initgraph (&gd, &gm, ""); setbkcolor (12); setcolor (14); rectangle (120, 130, 240, 250); setcolor (6); line (120, 130, 180, 80); setcolor (2); line (180, 80, 240, 130); setcolor (14); rectangle (160, 160, 200, 250); setcolor (4); setfillstyle(7, 9); circle( 300, 300, 50); floodfill (300, 300, 4); getch( ); closegraph ( ); }

Bo’yash va chizish usullari hamda stillari haqida

  • setfillstyle (style, color) – bo’yash usul va rangni urnatish. Bu yerda style - o’zgarmas kattalik bo’lib, u quyidagicha bo’lishi mumkin:
  • 0 - sohani fon rangi bilan to’ldirish;
  • 1- sohani rang bilan uzluksiz to’ldirish;
    • 2- Qalin gorizontal chiziqlar;
    • 3- ingichka ogma chiziqlar;
    • 4- yo’g’on og’ma chiziqlar;
    • 5- yo’g’on og’ma chiziqlar (boshqa stil)
    • 6- og’ma yo’llar
    • 7- to’rtburchakli chiziqlar;
    • 8- og’ma to’rtburchaklar
    • 9- zich og’ma shrtixlar
    • 10- siyrak nuqtalar (u yer - bu yerda)
    • 11- zich nuqtalar bilan

2. floodfill (x, y, color) - joriy rang va usuldan foydalangan xolda chegaralangan soxani bo’yash. Bu yerda x va y - shu soxaga tegishli bo’lgan biror nuqta koordinatasi. Avval rang, keyin stili ko’rsatiladi. Masalan: setcolor (4); {qizil rangli qalam, chegara rangi} setfillstyle (1, 2); {1-stil bilan yashil rang bilan bo’yash} circle (50, 50, 35); {radusi 35 bo’lgan aylana chizish} floodfill (50, 50, 4); {aylana ichiga rang to’kish, bo’yaladigan chegara rangi rangli qalam bilan bir xil bo’lishi kerak}

  • 3. setlinestyle (s, a, b) - turli stildagi chiziq-larni chizish uchun; Bu yerda s- style nomeri; a -foydalanuvchi stilini yaratishi mumkin bo’lgan parametr, odatda a=1 deb olinadi; b- chiziqning qalinligini ko’rsatadi-gan parametr
    • 0- oddiy chiziq;
    • 1- mayda punktir chiziq;
    • 2- qalin va uzunchok punktir chiziq;
    • 3- yupqa va uzunchoq punktir chiziq;
    • 4- siyrak nuqtali chiziq.
  • Misol:
  • include
  • include
  • void main ( )
  • { int i, j, gd, gm ;
  • gd= 0;
  • initgraph (&gd, &gm, " ");
  • setcolor (14); // sariq qalam
  • for ( i=0; i<=20; i++) for ( j=0; j<=20; j++)
  • circle (i*50, j*30, 55); // sariq rangli aylanalar
  • rectangle (0, 0, getmaxx, getmaxy); //ekran bo’ylab to’g’ri turtburchak setcolor (11); // to’q feruza rangli qalam
  • bar3d(200, 300, 100, 150, 30, topon); // parallelopiped, ichi ok setcolor (CYAN); // och feruza rangli qalam
  • fillellipse (350, 360, 135, 90); //ellips, ichi oq rangda
  • getch( ); closegraph( ); }
  • include
  • include
  • void main ( )
  • { gd=0;
  • initgraph (&gd, &gm, ' '); setbkcolor (BLUE); setcolor (14); rectangle (120, 130, 240, 250); setcolor (6);
  • line (120, 130, 180, 80); setcolor (2);
  • line (180, 80, 240, 130); setcolor (14);
  • rectangle (160, 160, 200, 250); setcolor (4); setfillstyle(7, 9); circle( 300, 300, 50); floodfill (300, 300, 4); getch( );
  • closegraph ( );
  • }
  • Misol

Grafik rejimida matnlar bilan ishlash Grafik rejimi xolatida turli shriftlardan foydalanib matnlarni xam yozsa bo’ladi. Shriftlar .chr kengaytmali fayllarda saqlanadi. Ular .bgi fayllari bilan bitta katalogda saqlanishi shart. outtextxy (x, y, 'matn'); - matnni yozish; bu yerda x va y matn boshlanadigan nuqta koordinatalari; masalan: outtextxy (10, 10, ‘Aylana markazi'); settextstyle (sh, n, r); mant shriftini o’rnatish; bu yerda sh - shrift nomeri (0 - vektorli shrift, 1 - standart shrift); n - shrift yunalishi (0 - chapdan ungga, 1 - quyidan yukoriga yozish); r - shrift razmeri (oddiy shriftda 1, vektorli shriftda 4 deb olinadi);

  • settextjustify (h, v) - yozilgan qatorni tekislaydi. U outtextxy prosedurasidan keyin yoziladi. Bu yerda h - gorizontal tekislash; v - vertikal tekislash; Gorizontal tekislash uchun: 0 - chapga; 1- markaz-ga; 2 – o’ngga. Vertikal tekislash uchun: 0 - pastga; 1 - markazga; 2 - yuqoriga. setusercharsize - vektor shriftlari uchun bir xil simvollarning eni va bo’yini o’rnatadi. Masalan: setUserCharSize(x1, y1, x2, y2);
  • #include
  • #include
  • int main()
  • {int i;
  • initwindow(500,500); for (i=1;i<=10;i=i+1){
  • outtextxy(50*i,50*i,"Salom bu men"); circle(50*i,50*i,100); }
  • getchar();
  • system("pause");
  • closegraph();
  • }
  • Matn chop etish
  • int main() {
  • initwindow(700,600); setfillstyle(1,9); bar(100,100,300,200); setcolor(13);
  • rectangle(100,100,300,200); moveto(100,100); lineto(200, 50); lineto(300,100); setfillstyle(1,14); floodfill(200, 75, 13); setcolor(15);
  • circle(200, 150,50); setfillstyle(1, 10); floodfill(200,150, 15); setcolor(12);
  • outtextxy(100, 230,"-Sharikning uyi-");
  • getch(); closegraph(); return 0;}
  • Sharikning uyi
  • int main() { float y,x; float z,w;
  • initwindow(640,480); //Oyna o'lchami
  • moveto(320,0); //koordinata gorizontal o'qi boshi
  • lineto(320,480); //koordinata gorizontal o'qi oxiri
  • moveto(0,240); //koordinata vertikal o'qi boshi
  • lineto(640,240); //koordinata vertikal o'qi oxiri
  • z=320; w=240;
  • for(x=-5;x<=5;x+=0.0001)
  • { y=sin(2*x); moveto(z,w);
  • putpixel(320+x*50,240-y*50,14); z=320+x*50; w=240-y*50;
  • }
  • getch(); closegraph(); }
  • y=2sin2x funksiya grafigi
  • main() { float y,x; float z,w;
  • initwindow(640,480); //Oyna o'lchami
  • moveto(320,0); //koordinata gorizontal o'qi boshi
  • lineto(320,480); //koordinata gorizontal o'qi oxiri
  • moveto(0,240); //koordinata vertikal o'qi boshi
  • lineto(640,240); //koordinata vertikal o'qi oxiri
  • z=320; w=240;
  • for(x=-5;x<=5;x+=0.0001)
  • { y=2*atan(x)-x+3; moveto(z,w);
  • putpixel(320+x*50,240-y*50,14); z=320+x*50; w=240-y*50; }
  • getch();closegraph(); }
  • y=2arctgx-x+3 funksiya grafigi
  • { float y,x; float z,w; initwindow(640,480); //Oyna o'lchami
  • moveto(320,0); //koordinata gorizontal o'qi boshi
  • lineto(320,480); //koordinata gorizontal o'qi oxiri
  • moveto(0,240); //koordinata vertikal o'qi boshi
  • lineto(640,240); //koordinata vertikal o'qi oxiri
  • z=320; w=240; for(x=-5;x<=5;x+=0.0001)
  • { y=cos(2*x); moveto(z,w); putpixel(320+x*50,240-y*50,14); z=320+x*50; w=240-y*50; } z=320; w=240;
  • for(x=-5;x<=5;x+=0.0001) { y=sin(2*x); moveto(z,w);
  • putpixel(320+x*50,240-y*50,14); z=320+x*50; w=240-y*50; }
  • z=320; w=240; for(x=-5;x<=5;x+=0.0001) { y=x*x; moveto(z,w); putpixel(320+x*50,240-y*50,13); z=320+x*50; w=240-y*50;} getch( );
  • closegraph( );
  • y=cos2x, y=sin2x, y=x*x funksiyalar grafigi
  • int main() { initwindow (640,480);
  • setbkcolor (DARKGRAY); cleardevice ();
  • setfillstyle (SOLID_FILL, BLUE);
  • bar (70, 50, 600, 150); setfillstyle (SOLID_FILL, RED);
  • bar (70, 150, 600, 157);setfillstyle (SOLID_FILL, WHITE);
  • bar (70, 157, 600, 257); setfillstyle (SOLID_FILL, RED);
  • bar (70, 257, 600, 264); setfillstyle (SOLID_FILL, GREEN);
  • bar (70, 264, 600, 350); setfillstyle (SOLID_FILL, WHITE);
  • fillellipse (125, 100, 45, 45); setcolor (BLUE);
  • setfillstyle (SOLID_FILL,BLUE); fillellipse (142,100,37,37);
  • setbkcolor (BLUE); setcolor (WHITE); settextstyle (8, 0, 4);
  • outtextxy (160, 60, "*** "); outtextxy (160, 88, "**** ");
  • outtextxy (160, 118,"*****"); getch(); closegraph();
  • }
  • Bayroq rasmi
  • Funksiyalarning grafiklarini chizish.
  • include
  • include
  • include void main ( )
  • { int i, j, gd, gm ; float x, y;
  • gd=0; initgraph (&gd, &gm, " ");
  • setcolor (14);
  • line (320, 0, 320, 480);
  • line (0, 240, 640, 240);
  • line (480, 0, 480, 235);
  • line (325, 120, 635, 120);
  • line (160, 245, 160, 475);
  • line (0, 360, 315, 360);
  • line (480, 245, 480, 475);
  • line (325, 360, 635, 360);
  • x =-10; outtextxy(10, 20, ' y=sin(x) grafigi'); do
  • { y = sin(x);
  • putpixel (160 + 10*x, 120 - y, 5); x = x+0.001; }
  • while (x<=10);
  • x1 = -10; outtextxy(10, 20, ' y=cos(x) grafigi'); do
  • { y = cos(x1);
  • putpixel (480 + 20*x1, 120 - 20*y1, 6); x1 = x1+0.001; } while (x1 < =10);
  • x2 = -10; outtextxy(10, 20, ' y=exp(x) grafigi'); do
  • { y2 = exp(x2);
  • putpixel (160 + 10*x2, 360 - 20*y2, 7); x2 = x2+0.001; } while (x2 <=10);
  • x3 = -10; outtextxy(10, 20, ' y=ln(x) grafigi'); do
  • { y3 = ln(x3);
  • putpixel (480 + 10*x3, 360 - y3, 8); x3 = x3+0.001; }
  • while (x3 <=10); getch( );
  • closegraph( ); }

Эътиборларингиз учун рахмат!!!


Download 0,61 Mb.

Do'stlaringiz bilan baham:
1   2   3




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