Tasdiqlayman” Qo`shtepa ixtisoslashtirilgan maktabi mmibdo`: S. Egamov



Yüklə 2,73 Mb.
səhifə147/174
tarix07.01.2024
ölçüsü2,73 Mb.
#205597
1   ...   143   144   145   146   147   148   149   150   ...   174
Tasdiqlayman” Qo`shtepa ixtisoslashtirilgan maktabi mmibdo` S.

PutPixel(X,Y,Rang) operatori ekranning (X,Y) koordinatali nuqtasini “Rang” parametri bilan aniqlangan rangga bo‘yaydi. Masalan, PutPixel(400,200,Red) operatori ekranning (400,200) koordinatasiga mos joyda qizil rangli nuqta joylashtiradi (yuqoridagi rasm).
GetPixel(X,Y) funksiyasi ekranning (X,Y) koordinatali nuqtasi qanday rangda ekanini aniqlaydi. Masalan, Rang – butun tipli o‘zgaruvchi bo‘lsa, Rang:= GetPixel(40,50); operatori bajarilgach Rang o‘zgaruvchi (40,50) koordinatali nuqta rangining qiymatiga teng bo‘ladi.
GetMaxX va GetMaxY funksiyalari mos ravishda ekranning gorizontal va vertikal yo‘nalishi bo‘yicha maksimal koordinatasini aniqlaydi. Bu funksiyalar kompyuterning grafik adapteri va ishlatiladigan grafik holatga bo‘g‘liq bo‘lmagan dasturlar tuzishda foydalidir.
1-misol. Nuqtalar yordamida ekranning (0,0) nuqtasini (639,479) nuqtasi bilan tutashtiruvchi qizil rangli kesma chizish dasturini tuzing.
Yechish. Quyidagicha butun o’zgaruvchilarni qiymati bilan olamiz: bx:=0; ox:= GetMaxX; (ox:=639; kabi olish mumkin). Tekshirib ko’rishingiz mumkin, [bx, ox] oraliqda y=[GetMaxY·x/GetMaxX] butun qiymatli chiziqli funksiyaning boshlang’ich qiymati 0 va oxirgi qiymati 479 bo’ladi (GetMaxY o’rniga 479 yozish ham mumkin). Endi parametrli takrorlash operatori yordamida tuzilgan quyidagi dastur misol yechimini beradi.
Uses Graph;
Var gd, gm:integer;
bx, y, ox: Integer; x: LongInt;
Begin
Gd := 0; InitGraph(Gd, Gm, ‘‘);
bx:=0; ox:= GetMaxX;
For x:= bx to ox do begin
y:= trunc(GetMaxY*x/GetMaxX); putpixel(x, y, red); end;
Readln; CloseGraph;
End.
Nima uchun x o’zgaruvchi LongInt turda olinganini o’ylab ko’ring!
2-misol. Nuqtalar yordamida ekran markazida R radiusli sariq rangli aylana chizish dasturini tuzing.
Yechish. Ekran markazini aniqlaydigan butun o’zgaruvchilarni kiritib olamiz: markazX:=trunc(GetMaxX/2); markazY:=trunc(GetMaxY/2); (yoki markazX:=639; va markazY:=479). Matematikadan ma’lumki, ta’rif bo’yicha va . Bundan kelib chiqadiki, markazi (0,0) nuqtada bo’lgan R radiusli aylana nuqtalarini quyidagi formulalar juftligi orqali aniqlash mumkin: x = r·cos(), y = r·sin(), bunda  burchak 0 dan 2 gacha o’zgaradi. Dasturda aylana nuqtalarini zichroq chizish uchun  burchak o’zgarishini 0,01 qadam bilan olamiz. Shularga asosan quyidagi dasturni tuzamiz.
Uses Graph;
Var gd, gm:integer;
x, y, markazX, markazY: Integer; R, alfa: real;
Begin
Gd := 0; InitGraph(Gd, Gm, ‘‘);
Write(‘R= ‘); readln(R);
markazX:=trunc(GetMaxX/2); markazY:=trunc(GetMaxY/2); alfa:=0;
while alfa<=2*pi do begin
x:= markazX +trunc(R*cos(alfa));
y:= markazY +trunc(R*sin(alfa));
putpixel(x, y, 14); alfa:= alfa+0.01;
end;
Readln; CloseGraph;
End.
3-misol. Ekran markazini koordinata boshi hisoblab nuqtalar yordamida x  [–5, 5] oraliqda ko’k rangda y=x2 funksiya grafigini chizish dasturini tuzing.
Yechish. Bu vazifa quyidagicha hal etiladi:
uses Graph;
var gD,gm: Integer;
markazX, markazY: integer; x, y: real;
begin
gD := 0; InitGraph(gD, gm, ‘‘);
markazX:=trunc(getmaxx/2); markazY:=trunc(getmaxy/2); x:= –5;
while x<=5 do begin
y:=x*x; putpixel(trunc(10*x+markazX), trunc(–5*y+markazY),blue);
x:=x+0.01; end;
Readln; CloseGraph;
end.
Dasturda masshtabni kattalashtirish uchun x ni 10 ga, y ni 5 ga ko’paytirdik. Parabola shoxchalari quyidan yuqoriga yo’nalgan bo’lishi uchun “–” ishora qo’yilgan. Masshtabni kattalashtirishni va ishorani olib tashlab dasturni ishlatib ko’rishni o’zingizga havola etamiz.

Yüklə 2,73 Mb.

Dostları ilə paylaş:
1   ...   143   144   145   146   147   148   149   150   ...   174




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin