b) Yangi mavzu bayoni
T-l. Tomonlarini rangi turlicha boigan to‘g‘ri to‘rtburchak chi-zish dasturini tuzing.
Yechim:
E
Natiianing ekrandagi ko‘rinishi: 20 480
kran grafik holatga o‘tkazilgach PutPixel(X,Y,Rang) protsedurasi va pa- rametrli takrorlash operatorlari yordamida kerakli nuqtalar joylashtiriladi.
Dasturi:
Uses Graph;
var gd, gm: Integer; x, y: integer; Begin gd:= 0; InitGraph(gd, gm, "); For x:=20 to 480 do BEGIN PutPixel(x, 20, blue);
PutPixel(x, 300, green); END;
For y:=20 to 300 do BEGIN PutPixel(20, y, yellow); PutPixel(480, y, red); END; Readln; CloseGraph; end.
T-2. Grafik koordinatasi bilan berilgan nuqta uchlarining grafik koordinatalari orqali berilgan to‘g‘ri chiziqqa tegishli yoki tegishli emasligini aniqlovchi dastur tuzing (yo‘llanma: nuqtani rangi to‘g‘ri chiziqning rangiga tengligini aniqlash uchun GetPixel funksiyasidan foydalaning).
Yechim:
Ekran grafik holatga o‘tkazilgach, nuqtaning koordinatalari (x0,y0) va to‘g‘ri chiziq uchlarining koordinatalari (xl,yl) va (x2,y2) kiritiladi. Endi ikki nuqtadan o‘tuvchi to‘g‘ri chiziq tenglamasidan foydalanib PutPix- el(X,Y,Rang) protsedurasi va parametrli takrorlash operatorlari yordamida kodi 0 bo‘lgan qora rangdan boshqa rangda, masalan, kodi 15 bo‘lgan oq rangda to‘g‘ri chiziq chiziladi. GetPixel(X,Y) funksiyasi yordamida (x0,y0) nuqtaning rangi aniqlanadi. Agar nuqta rangi kodi 15 (oq) bo‘lsa, nuqta to‘g‘ri chiziqqa tegishli, aks holda, ya’ni nuqta rangi kodi 0 (qora) bo‘lsa, nuqta to‘g‘ri chiziqqa tegishli emas.
Ikki nuqta (xl,yl) va (x2,y2) dan o‘tuvchi to‘g‘ri chiziq tenglamasi quyi- dagicha: Y=y 1 +(X-x 1 Ky2-y 1 )/(x2-x 1).
Geometriya kursidan ma’lumki, agar x2=xl bo‘lsa, u holda to‘g‘ri vertik- al boMib, Y ning 0 dan 479 gacha bo‘lgan qiymatida X=xl tenglama bilan aniqlanadi. Agar x2^xl bo‘lsa, yuqoridagi formula o‘z kuchini saqlab qoladi.
Dasturi:
Uses Graph;
var gd, gm: Integer; x, y: real; xO, yO, xl, yl, x2, y2: integer;
Begin
gd:= 0; InitGraph(gd, gm, ");
Write(‘x0= ‘); Readln(xO);
Write(‘y0= ‘); Readln(yO);
Write(‘xl= ‘); Readln(xl);
Write(‘yl= ‘); Readln(yl);
Write(‘x2= ‘); Readln(x2);
Write(‘y2= ‘); Readln(y2);
IF x2=xl THEN For Y:=0 to 479 do PutPixel(xl, trunc(Y), 15);
ELSE BEGIN X:= 0;
While x<=639 do Begin Y:=y 1 +(X-x 1 )*(y2-y 1 )/(x2-x 1); putpixel(trunc(X), trunc(Y),15);
X:=X+0.01; End;
END;
IF GetPixel(x0,y0)=15 THEN Write(‘Tegishli‘) ELSE Write(‘Tegishli emas‘);
Readln; CloseGraph; end^
T-3. Turli rangda 15 ta parallel kesmalar chizuvchi dastur tuzing (yo‘llanma: kesma koordinatalarini va rangni oshirish uchun takrorlash operatoridan foydalaning).
Do'stlaringiz bilan baham: |