logo

IKKI CHIZIQNI KESISHISH UCHUN TEKSHIRISH ALGORITMLARI

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

495.9892578125 KB
MAVZU: IKKI CHIZIQNI KESISHISH UCHUN TEKSHIRISH
ALGORITMLARI.
      MUNDARIJA
Kirish. ........................................................................................................................................................... 2
Bresenhem algoritmi ................................................................................................................................... 3
Bresenhem algoritmi qo’llanilishi. ............................................................................................................... 7
Bresenhem algoritmining asosiy g'oyasi. ................................................................................................... 11
Bresenxem algoritmidagi xato grafigi. ....................................................................................................... 12
Birinchi oktant uchun segmentni rastrlash uchun Bresenhem algoritmi ................................................... 13
Bresenhem algoritmining blok diagrammasi. ............................................................................................ 14
General Bresenhem algoritmi. ................................................................................................................... 15
Umumlashtirilgan Bresenhem algoritmi uchun misollar tahlili. ................................................................. 16
Doira hosil qilish uchun Bresenhem algoritmi. .......................................................................................... 17
Birinchi oktantdagi yoydan to`liq aylana hosil bo`lishi. .............................................................................. 17
................................................................................................................................................................... 18
Birinchi chorakda aylana hosil qilish uchun Bresenhemning bosqichma-bosqich algoritmi ...................... 21
Bezier egri chizig'i va uning geometrik algoritmi. ...................................................................................... 22
Bezier egri chiziqlarining turlari ................................................................................................................. 23
Kompyuter grafikasida dastur .................................................................................................................... 24
 Xulosa. ...................................................................................................................................................... 24
Foydalanilgan adabiyotlar. ......................................................................................................................... 26 Kirish .
Algoritm so`zi barchamizga ma`lum bo`lganidek, vatandoshimiz Muhammad ibn 
Muso al-Xorazmiyning ismini yevropacha talaffuzidan kelib chiqqan. Demak, 
hozirda keng foydalanilayotgan algoritmlashning asosi bizning Vatanimizdan 
boshlangan.
Maktab informatika kursidan ma`lumki, algoritm bu – ma`lum masalani hal qilish 
uchun bajarish kerak bo`lgan amallar ketma-ketligi. O`sha mashhur choy damlash 
algoritmidan chekingan holda hayotiy misol keltiramiz. Hayotda eng ko`p 
bo`ladigan holatimiz bu uyqu. Ko`pchilik rejim bilan uxlaydi , ya`ni uxlashga 
ma`lum bir vaqtni belgilagan. Misol uchun siz uxlashga yotish uchun 22:00ni 
tanladingiz. Har safar soatga qaraganingizda uxlash vaqti bo`lgan yoki 
bo`lmaganini tekshirasiz. Miyangizda esa quyidagi jarayon bo`ladi:
Bu oddiy uyquga yotish algoritmi edi. Hayotda o`zimiz bilmagan holatda 
algoritmlardan foydalanamiz. Miyamiz juda tez ishlagani sabab qadamlar ketma-
ketligi haqida o`ylab ko`rmaymiz.
Endi maqolamizning asosiy qismi, dasturlashda algoritmlashga o`tamiz. 
Dasturlashda algoritm bu – masalani yechish uchun bajarilishi kerak bo`lgan 
amallar ketma-ketligini kodga o`girilgan varianti. Bunda masalani yechish uchun 
miyamizda kechayotgan jarayonni kompyuter tushunadigan qilib yozish talab 
etiladi.
Algoritmlashning asosi matematika hisoblanadi. Bunda fikrlash muhim rol 
o`ynaydi. So`zimni quyidagicha isbot qilaman. Dasturlash sanoatida gigant 
korporatsiya hisoblangan Microsoftning asoschisi Bill Geytsning shunday so`zlari 
dasturchilar orasidda mashhur:"Qo`shish va ayirishni biladigan har qanday inson 
dasturchi bo`la oladi". Bu so`zlarni mag`zini chaqish uchun sizlarni boshlang`ich 
sinflarga qaytishga taklif etaman. Har birimiz boshlang`ich sinflarda qo`shish va 
ayirish amallarini o`rgangan edik. Ko`pchilik buni barmoqlari orqali bajargan. 
Chunki barmoqlar 10ta va raqamlarni qo`shish va ayirishda qo`l keladi. 
Keyinchalik matematik evolutsiyamiz sonlar bilan qo`shish va ayirish amallarini 
bajarish bosqichiga yetib keladi. Bu rivojlanish jarayoni yangi amallar bilan boyidi
va endi bir xil raqamlarni bir necha marta qo`shishni osonlashtirish uchun 
ko`paytirish jadvalini o`rgandik. E`tibor bering, ko`paytirish algoritmi qo`shish 
algoritmining asosiga qurilgan. Rivojlanishimiz davom etib, endilikda qoldiqli 
bo`lish va shu kabi murakkabroq amallarga o`tamiz. Maktabni bitirish vaqtida esa 
juda murakkab amallarni ham bajara oladigan darajada bo`lamiz. Ana 
ko`rdingizmi, hamma murakkab amallarning asosi qo`shish va ayirishdan 
boshlanadi. U yog`i esa fikrlash doirangiz kengligiga bog`liq. Demak, 
dasturlashdagi asosiy masalalar matematik fikrlashga bog`liq. Algoritmlashning asosiy shartlaridan biri bu – dasturning ishlash tezligi. Kod 
qanchalik optimal bo`lsa, dastur shuncha tez ishlaydi. Dastur tezligini 
pasaytiruvchi omillar bu – loop, ya`ni takrorlanishlar. Sikl ichida sikl ochish yoki 
sikl ichida shart tekshirish dastur tezligini ma`lum darajada pasaytiradi. Hayotiy 
misol keltiraman: 7ta 45ni bir biriga qo`shing. Har birini alohida qo`shib chiqish 
uchun vaqt talab etiladi. Ya`ni 7 marta bir xil amalni bajarish kerak. Xuddi shuni 
ko`paytirish amali orqali kamroq vaqt sarflab amalga oshirish mumkin. Har birimiz
arifmetik progressiya haqida tushunchaga egamiz. Hadlari bir biridan ma`lum d 
songa farq qiladigan sonli ketma-ketlik. Shuni nta hadi yig`indisini toppish uchun 
n marta har safar yangi hadni topish va uni oldingi sonlar yig`indisiga qo`shish 
talab etiladi. Bu esa juda ko`p vaqt talab qiladi. Aynan shu muammo matematikada
oddiy formula orqali hal etilgan. Bu muammoni hal etish formulasi esa albatta 
tafakkur mahsuli hisoblanadi. Siz ham yuqori darajali masalalarni yechishda ana 
shunday ixtirolar qilasiz yoki boshqa ixtirolardan foydalanasiz.
Dasturlashda algoritmlashning asosan 4 turi mavjud:
1.Saralash
2.Qidirish
3.Grafiklar
4.Stringlar
Ularning har biriga keyingi maqolalarimizda alohida to`xtalib o`tishga harakat 
qilamiz. Hozir esa oddiy algoritmlaning kodga o`girilish jarayonini ko`rib 
chiqamiz.
Bresenhem algoritmi
Ikki chiziqni kesishish uchun tekshirish algoritmlaridan  biri haqida aytsak bu-
Bresenhem algoritmidir.Bresenxem algoritmi Jek E. Bresenxem tomonidan 1962 
yilda taklif qilingan va u tekislikda nuqtalari bo'lgan raqamlarni chizish uchun 
mo'ljallangan. Bu algoritm ekranda chiziqlar chizish uchun kompyuter grafikasida 
keng qo'llaniladi. Algoritm ikki o'lchovli rastrning qaysi nuqtalarini bo'yash 
kerakligini aniqlaydi.
C = y1 ∙ x2-y2 ∙ x1
Koordinatali har qanday raster nuqtasi uchun ( xi;yi) qiymat funktsiyasi
Bresenhem algoritmining grafik talqini rasmda ko'rsatilgan . Bresenhem algoritmi yordamida tekislikda to'g'ri chiziq segmentlarini chizish 
uchun biz to'g'ri chiziq tenglamasini umumiy shaklda yozamiz.
f (x, y) = Ax + By + C = 0
bu erda koeffitsientlar A va B koeffitsientlar bilan ifodalanadi k va b to'g'ri chiziq 
tenglamalari. Agar to'g'ri chiziq koordinatali ikkita nuqta orqali o'tsa ( x1;y1) va 
( x2;y2), keyin to'g'ri chiziq tenglamasining koeffitsientlari formulalar bilan 
aniqlanadi  A = y2-y1,    B = x1-x2
f (xi, yi)= 0, agar nuqta to'g'ri chiziqda bo'lsa
f (xi, yi)> 0, agar nuqta to'g'ri chiziq ostida bo'lsa
f (xi, yi) qayerda i- ko'rsatiladigan nuqta raqami.
Shunday qilib, qaysi nuqtalarni hal qilish usullaridan biri P. yoki Q(rasmga qarang)
keyingi bosqichda ko'rsatiladi, bu segmentning o'rtasini solishtirish | P-Q | 
funktsiya qiymati bilan f (x, y)... Agar qiymat bo'lsa f (x, y) chiziq segmentining 
o'rta nuqtasidan pastda joylashgan | P-Q |, keyin keyingi ko'rsatiladigan nuqta 
nuqta bo'ladi P., aks holda - nuqta Q . Funktsiyaning ortishini yozamiz
∆f = A∆x + B∆y
Nuqtani koordinatalar bilan ko'rsatgandan so'ng (xi, yi) ko'rsatiladigan keyingi 
nuqta aniqlanadi. Buning uchun o'sish ko'rsatkichlari taqqoslanadi  Δ x va Yy, mos 
keladigan koordinata bo'ylab harakatning mavjudligi yoki yo'qligini tavsiflaydi. Bu
o'sish 0 yoki 1 bo'lishi mumkin. Shuning uchun biz nuqtadan o'ngga harakat qilsak,
biz nuqtadan o'ngga va pastga siljiganimizda
∆f = A + B,
biz bir nuqtadan pastga siljiganimizda, demak
Biz segment boshining koordinatalarini bilamiz, ya'ni aniq to'g'ri chiziqda 
yotadigan nuqta. Biz birinchi nuqtani qo'yamiz va qabul qilamiz f= 0. Siz joriy 
nuqtadan ikki qadam - vertikal (gorizontal) yoki diagonal bo'yicha bitta pikselga 
o'tishingiz mumkin.
Vertikal yoki gorizontal harakatlanish yo'nalishi qiyalik nisbati bilan belgilanadi. 
Nishab burchagi 45º dan past bo'lsa va   | A |<|B|
har bir qadamda harakat gorizontal yoki diagonalda amalga oshiriladi.
Nishab burchagi 45º dan yuqori bo'lsa, har bir qadamda harakat vertikal yoki 
diagonalda amalga oshiriladi.
Shunday qilib, egilgan segmentni chizish algoritmi quyidagicha:
C ++ ilovasi :
1. #qo'shing
2. std nomlar maydonidan foydalanish;
3. bo'sh Brezenhem (char ** z, int x0, int y0, int x1, int y1)
4. {
5. int A, B, belgisi;
6. A = y1 - y0;
7. B = x0 - x1;
8. agar (abs (A)> abs (B)) belgisi = 1;
9. else belgisi = -1;
10. int signa, belgi;
11. agar (A.< 0) signa = -1;
12. else signa = 1;
13. agar (B.< 0) signb = -1;
14. else signb = 1;
15. int f = 0;
16. z = "*"; 17. int x = x0, y = y0;
18. agar (belgisi == -1)
19. {
20. qil (
21. f + = A * belgisi;
22. agar (f> 0)
23. {
24. f - = B * belgisi;
25. y + = belgisi;
26. }
27. x - = belgisi;
28. z [y] [x] = "*";
29. }
30. boshqa
31. {
32. qil (
33. f + = B * belgisi;
34. agar (f> 0) (
35. f - = A * belgisi;
36. x - = belgisi;
37. }
38. y + = belgisi;
39. z [y] [x] = "*";
40. ) esa (x! = x1 || y! = y1);
41. }
42. }
43. int main ()
44. {
45. const int SIZE = 25; // maydon hajmi
46. int x1, x2, y1, y2;
47. char ** z;
48. z = yangi belgi *;
49. uchun (int i = 0; i< SIZE; i++)
50. {
51. z [i] = yangi belgi;
52. uchun (int j = 0; j< SIZE; j++)
53. z [i] [j] = "-";
54. }
55. kut<< "x1 = " ; cin >> x1;
56. kut<< "y1 = " ; cin >> y1;
57. kut<< "x2 = " ; cin >> x2;
58. kut<< "y2 = " ; cin >> y2; 59. Brezenhem (z, x1, y1, x2, y2);
60. uchun (int i = 0; i< SIZE; i++)
61. {
62. uchun (int j = 0; j< SIZE; j++)
63. kut<< z[i][j];
64. kut<< endl;
65. }
66. cin.get (); cin.get ();
67. qaytarish 0;
68. }
Bresenxem algoritmi nazorat vazifalarida ham ishlatilishi mumkin, masalan, 
quvvatni yoki aylanish tezligini tartibga solish uchun. Bunday holda, gorizontal o'q
vaqt o'qi bo'lib, ko'rsatilgan qiymat to'g'ri chiziqning burchagi koeffitsientini 
o'rnatadi.
Agar kosmik diskret bo'lmasa, nega Axilles toshbaqani quvib o'tadi? Agar kosmik 
diskret bo'lsa, unda zarrachalar Bresenhem algoritmini qanday amalga oshiradi?
Men uzoq vaqt davomida umuman olam nimani anglatishi va uning qonunlari 
haqida o'ylardim. Ba'zida o'sha Vikipediyadagi ba'zi fizik hodisalarning tavsiflari, 
bu sohadan unchalik uzoq bo'lmagan odam uchun ham tushunarsiz bo'lib qolishi 
uchun chalkashtirib yuboradi. Bundan tashqari, menga o'xshaganlar - hech 
bo'lmaganda, bu hududdan juda uzoqda bo'lganlar uchun omadim kelmadi. Ammo,
men dasturchi sifatida deyarli har kuni biroz boshqacha tekislikka duch kelaman - 
algoritmlar. Va bir marta, konsolda 2 -darajali fizikaning bir xil ko'rinishini amalga
oshirish jarayonida, men o'yladim: "Ammo koinot, aslida, noma'lum o'lchovli 
konsoldir. Bu konsol ekranida chiziqli harakatlanish uchun zarrachalar Bresenxem 
algoritmini bajarmasligi kerak deb o'ylashga asos bormi? " Va hech qanday sabab 
yo'qdek tuyuladi.
Bresenhamning algoritmi umuman nimaga bog'liqligi, uning fizikaga qanday 
aloqasi borligi va bu uning talqiniga qanday ta'sir qilishi mumkinligi bilan qiziqqan
har bir kishini mushuk ostida xush kelibsiz. Ehtimol, siz u erda parallel 
olamlarning mavjudligini bilvosita tasdiqini topasiz. Yoki hatto ichki uyalar ham 
bor.
Bresenhem algoritmi qo’llanilishi.
Oddiy   qilib   aytganda ,  daftar   qog ' oziga   bir   hujayrali   qalinlikdagi   chiziq   chizish  
uchun   ketma - ket   ketma - ket   hujayralarni   bo ' yash   kerak   bo ' ladi .  Daftar   varag ' i  
tekisligi   hujayralarda   diskret ,  deylik ,  siz   qo ' shni   katakchalarning   ikkita   qo ' shni  
yarmini   bo ' yab   bo ' lolmaysiz   va  0,5  ofsetli   hujayraning   ustidan   bo ' yalgan   deb   ayta  
olmaysiz ,  chunki   diskretlik   bunday   harakatning   yo ' l   qo ' yilmasligidan   iborat . .  Shunday   qilib ,  ketma  - ket   hujayralarni   ketma  - ket   bo ' yash   orqali   siz   kerakli  
uzunlikdagi   segmentni   olasiz .  Keling, tasavvur qiling -a, uni har qanday 
yo'nalishda 45 gradusga burish kerak - endi siz hujayralarni diagonal bo'yaysiz. 
Aslida, bu bizning miyamiz tomonidan ikkita eng oddiy funktsiyani bajaradigan 
amaliy dastur:
F (x) = 0  va  F (x) = x
Endi tasavvur qilaylik, masalan, segmentni yana 10 gradusga burish kerak. Keyin 
biz klassik bir hil chiziqli funktsiyani olamiz:
F (x) = x * tan (55)
Va oddiy qog'ozga oddiy qalam bilan bu funksiyaning grafigini chizish 7 -sinf 
o'quvchisi uchun qiyin bo'lmaydi. Ammo, biz taxmin qilgan qog'oz hujayralari 
bo'lsa, nima qilish kerak? Axir, chiziq chizishda qaysi hujayralarni bo'yash 
kerakligini tanlash kerak bo'ladi. Bu erda Bresenham algoritmi yordamga keladi.
Bu aglomeratsiya Jek Bresenhem tomonidan 1962 yilda IBMda ishlagan paytda 
ishlab chiqilgan. U hali ham ko'plab grafik va dasturiy tizimlarda virtual grafikani 
amalga oshirish uchun ishlatiladi, ishlab chiqarish uskunasidan OpenGLgacha. 
Ushbu algoritmdan foydalanib, siz ushbu chiziq joylashgan tekislikning diskretlik 
darajasida berilgan chiziq uchun eng mos keladigan yaqinlashishni hisoblashingiz 
mumkin.
Umumiy holat uchun Javascriptni qo'llash
var draw = (x, y) => (...); // nuqta chizish funktsiyasi var bresenham = (xs, ys) => 
(// xs, ys - bu massivlar va shunga mos ravishda deltaX = xs - xs, deltaY = ys - ys, 
xato = 0, deltaError = deltaY, y = ys; uchun (x = xs bo'lsin; x<= xs; x++) { draw(x,
y); error += deltaError; if ((2 * error) >= deltaX) (y - = 1; xato - = deltaX;); ); );
Endi tasavvur qiling -a, bizni o'rab turgan makon hali ham diskret. Va u hech 
narsa, zarrachalar, tashuvchilar, Xiggs maydoni yoki boshqa narsalar bilan 
to'ldirilganmi, muhim emas - bo'shliqning minimal miqdori haqida ma'lum bir 
tushuncha bor, bundan kam bo'lmagan narsa bo'lishi mumkin. Va bu nisbiylik va 
nisbiylik nazariyasi to'g'riligining farqi yo'q - agar kosmik egilgan bo'lsa, u lokal 
ravishda egilgan bo'lsa ham, u boshqa holatda bo'lsa ham, diskret bo'ladi. har 
qanday yo'nalishda eng past chegarada o'zgarish yuz berdi. Ma'lum bo'lishicha, 
ma'lum bir hodisa yoki ob'ekt yoki qoida Bresenham algoritmini moddaning 
zarrachalari va o'zaro ta'sir tashuvchilarining har qanday harakati uchun bajarishi 
kerak. Qaysidir ma'noda, bu mikrokosmosdagi zarrachalar harakatining 
kvantlanishini tushuntiradi - printsipial ravishda ular kosmosning bir qismidan 
boshqa bo'lagiga "teleportatsiya qilmasdan" chiziqli harakat qila olmaydi, chunki 
shunda ma'lum bo'lishicha, kosmik umuman diskret emas. Kosmosning diskretligini yana bir bilvosita tasdiqlash yuqoridagilardan kelib 
chiqqan holda hukm bo'lishi mumkin: agar kuzatilgan miqyosning ma'lum darajada
pasayishi evklid geometriyasi yordamida tasvirlash qobiliyatini yo'qotsa, unda 
minimalni yengib o'tishda aniq bo'ladi. masofa chegarasi, hali ham mavzuni 
geometrik tavsiflash usuli bo'lishi kerak. Faraz qilaylik, bunday geometriyada bitta 
parallel to'g'ri chiziq asl to'g'ri chiziqqa tegishli bo'lmagan nuqta orqali o'tadigan 
bir nechta to'g'ri chiziqqa to'g'ri kelishi mumkin yoki bunday geometriyada to'g'ri 
chiziqlarning parallelligi tushunchasi umuman yo'q, yoki hatto to'g'ri chiziqlar 
tushunchasi, lekin minimal geometrik uzunlikdan pastroq ob'ekt geometriyasini 
tasvirlashning har qanday faraz qilingan usuli bo'lishi mumkin. Va bilasizki, 
bunday geometriyani ma'lum minimal chegarada tasvirlashga qodir bo'lgan bitta 
nazariya mavjud. Bu simlar nazariyasi. U mavjudligini taxmin qiladi nimadur 
sharh va matematik modelga qarab, olimlar zanjirlar yoki chiziqlar deb atashadi, 
darhol 11/26/26 o'lchamda. Shaxsan menimcha, bu taxminan shunday va 
so'zlarimni isbotlash uchun men siz bilan fikrlash tajribasini o'tkazaman: ikki 
o'lchovli tekislikda, geometriyasining to'liq "evklid" geometriyasi bilan, yuqorida 
aytib o'tilgan. qoida ishlaydi: bitta nuqta orqali berilganga parallel ravishda faqat 
bitta to'g'ri chiziq chizish mumkin. Endi biz bu qoidani uch o'lchovli maydonga 
ko'lamli qilib olamiz ikkita undan yangi qoidalar chiqadi:
Shunga o'xshash - bitta nuqta orqali siz unga parallel ravishda bitta to'g'ri chiziq 
chizishingiz mumkin
Berilgan to'g'ri chiziqdan ma'lum masofada, cheksiz-X to'g'ri chiziqlar bo'lishi 
mumkin va bu cheksizlik-X, berilgan masofaga qaramasdan, berilgan chiziqqa 
parallel bo'lgan barcha to'g'ri chiziqlarning cheksizligi-Z dan Y marta kam. 
taxminan, kosmosda to'g'ri chiziqning mumkin bo'lgan qalinligi
Oddiy qilib aytganda, agar siz to'g'ri chiziqlar qurishda o'lchov qo'shsangiz, lekin 
evklid geometriyasi qoidalariga to'g'ri chiziqlarga bo'ysunishni hisoblashda o'lchov
qo'shmasangiz, ikkita mumkin bo'lgan parallel to'g'ri chiziq o'rniga biz mumkin 
bo'lgan to'g'ri silindrni olamiz. markaz atrofidagi chiziqlar - asl to'g'ri chiziq. Endi 
tasavvur qiling -a, biz Super Mario dunyosida yashayapmiz va o'zimizning ikki 
o'lchovli makonimizga shunday silindrni loyihalashga harakat qilyapmiz - hisob -
kitoblarga ko'ra, parallel chiziqlar bo'lishi mumkin emas, lekin kuzatuvlarga ko'ra, 
ularning cheksizligi X ga teng. Biz nima deb o'ylaymiz? To'g'ri, biz to'g'ri chiziqlar
qurish uchun yana bir o'lchovni kiritamiz, lekin biz uni to'g'ri chiziqlarning evklid 
geometriyasi qoidalariga bo'ysunishini hisoblash uchun qo'shmaymiz. Aslida, 
bunday silindrning bizning ikki o'lchovli makonimizga proektsiyasini ko'rib, biz 
ikki o'lchovli dunyomizda simlar nazariyasini yaratamiz.
Parallel va ichki uyalar? Ma'lum bo'lishicha, osmon jismlarining xatti -harakatlarini atom modelida ko'rgan 
va aksincha, bu to'liq bema'nilik deb bahs yuritganlardan ko'ra, uzoqdan kelgan 
emas. Axir, agar siz o'zingizni hammadan ozod qilsangiz bilim va mantiqiy 
fikrlash uchun - nazariy jihatdan, pastki chegara biz bilgan evklid geometriyasining
ishlashini cheklash uchun biz ixtiro qilgan uydirmadan boshqa narsa emas. 
Boshqacha qilib aytganda, Plank uzunligidan kam bo'lgan hamma narsa, aniqrog'i, 
aytganda haqiqiy Plank uzunligi, Evklid geometriyasi usullari bilan hisoblash 
mumkin emas, lekin bu uning mavjud emasligini anglatmaydi! Ma'lum bo'lishicha,
har bir bran ko'p olamli to'plamdir va shunday bo'ladiki, Plank uzunligidan 
noma'lum Xgacha bo'lgan vaqt oralig'ida haqiqat geometriyasi Evklid, Plank 
uzunligidan pastda - masalan, Lobachevskiy geometriyasi yoki sharsimon 
geometriya. hukmronlik qiladi, yoki nima bo'lishidan qat'iy nazar, bizning parvoz 
fantaziyamizni hech qanday cheklamasdan va X chegarasidan yuqori - masalan, 
Desarges bo'lmagan va sferik geometriya. Tush ko'rishning zarari yo'q - 
deyishingiz mumkin, agar hatto kvant harakati uchun ham, chiziqli (hali ham 
mikrokosmos darajasida kvantlangan), zarrachalar Bresenham algoritmini bajarishi
kerak, agar bo'sh joy diskret bo'lsa.
Boshqacha qilib aytganda, Axilles hech qachon toshbaqaga etib bormaydi, yoki biz
Matritsada butun koinotni va ma'lum fizikani, ehtimol - haqiqatning xilma -
xilligining ulkan okeaniga bir tomchi.
LCD displeyni diskret elementlarning matritsasi sifatida ko'rish mumkin 
bo'lganligi sababli (ularning har biri yoritilishi mumkin), bir nuqtadan boshqasiga 
to'g'ridan -to'g'ri kesish mumkin emas. Berilgan segmentga eng yaqin bo'lgan 
piksellarni aniqlash jarayoni rasterizatsiya deyiladi. Rasmni chiziqli ko'rsatish 
jarayoni bilan birlashganda, u rastrli skanerlash konvertatsiyasi deb nomlanadi. 
Gorizontal, vertikal va moyil 45 ° uchun. rastr elementlarini tanlash aniq. Boshqa 
har qanday yo'nalishda, 1 -rasmda ko'rsatilgandek, kerakli piksellarni tanlash 
qiyinroq.
Shakl.1. To'g'ri chiziqli segmentlarning rastrga bo'linishi.
Chiziq segmentlarini chizish uchun algoritmlarga qo'yiladigan umumiy talablar 
quyidagicha: chiziqli segmentlar to'g'ri ko'rinishi kerak, boshlangan va tugagan 
joylari tugagan bo'lishi kerak, chiziq segmentining yorqinligi doimiy bo'lishi kerak 
va uzunlik va qiyalikka bog'liq emas, siz tezda chizishingiz kerak.
Butun segment bo'ylab doimiy yorqinlikka faqat gorizontal, vertikal va eğimli 45 ° 
to'g'ri chiziqlar chizish orqali erishiladi. Boshqa barcha yo'nalishlar uchun, 
rasterizatsiya, rasmda ko'rsatilgandek, yorug'likning notekisligiga olib keladi. 1.
Chiziq chizish algoritmlarining ko'pchiligi hisob-kitoblarni soddalashtirish uchun 
bosqichma-bosqich algoritmdan foydalanadi. Keling, bunday algoritmga misol 
keltiraylik: Bosqichma-bosqich algoritm
pozitsiya = boshlash
qadam = o'sish
1. agar pozitsiya - oxiri<  точность  keyin 4
agar pozitsiya> oxiri keyin 2
agar pozitsiya<  конец  keyin 3
2. pozitsiya = pozitsiya - qadam
3. pozitsiya = pozitsiya + qadam
4. tugatish.
Bresenhem algoritmining asosiy g'oyasi.
Hamma chiziq segmentlari raster nuqtalaridan o'tmaydi. Xuddi shunday holat 3 -
rasmda tasvirlangan, bu erda qiyaligi 3/8 bo'lgan segment avval rastr nuqtasi (0,0)
orqali o'tadi va ketma -ket uchta pikselni kesib o'tadi. Bundan tashqari, segment 
diskret piksellar bilan ifodalanganida xatoning hisobini ko'rsatadi.  Bresenham 
algoritmi dastlab raqamli plotterlar uchun ishlab chiqilgan bo'lsa -da, LCD 
monitorlar uchun ham bir xil darajada mos keladi. Algoritm chiziq segmentini 
ko'rsatish uchun optimal raster koordinatalarini tanlaydi. Ish paytida 
koordinatalardan biri - x yoki y (qiyalikka qarab) - bittaga o'zgaradi. Boshqa 
koordinatani o'zgartirish (0 yoki 1 ga) chiziqning haqiqiy holati va tarmoqning eng 
yaqin koordinatalari orasidagi masofaga bog'liq. Biz bu masofani xato deb 
ataymiz. Algoritm shunday tuzilganki, faqat bu xato belgisini tekshirish kerak. Bu birinchi 
oktantdagi segment uchun 2 -rasmda ko'rsatilgan, ya'ni. qiyaligi 0 dan 1 gacha 
bo'lgan chiziqli segment uchun, rasmdan ko'rinib turibdiki, agar segmentning (0,0) 
nuqtadan qiyaligi 1/2 dan katta bo'lsa, u holda chiziq bilan kesishma x = 1 y = 0 
to'g'ri chiziqqa qaraganda y = 1 chizig'iga yaqinroq joylashadi. Shuning uchun 
(1,1) raster nuqtasi (1,0) nuqtaga qaraganda chiziq segmentining yo'lini yaxshiroq 
yaqinlashtiradi. Agar qiyalik 1/2 dan kichik bo'lsa, buning aksi to'g'ri. 1/2 qiyalik 
uchun afzalroq tanlov yo'q. Bunda algoritm nuqta tanlaydi (1,1).
Bresenxem algoritmidagi xato grafigi.
Faqat xato belgisini tekshirish maqsadga muvofiq  bo'lgani  uchun, u dastlab -1/2 ga 
o'rnatiladi. Shunday qilib, agar segmentning qiyaligi 1/2 dan katta yoki teng bo'lsa, u 
holda koordinatali (1,0) keyingi raster nuqtadagi xato qiymatini quyidagicha hisoblash 
mumkin.  
e =   e   +   m
qayerda   m   qiyalikdir. Bizning holatda, boshlang'ich xato qiymati -1/2
e   = 1/2 + 3/8 = -1/8 Chunki   e   salbiy, segment piksel o'rtasidan pastda o'tadi. Shu sababli, bir xil gorizontal 
darajadagi piksel chiziq segmentining holatiga yaxshiroq yaqinlashadi, shuning 
uchun   da   ko'paymaydi. Xuddi shunday, biz xatoni hisoblaymiz
e = -1/8 + 3/8 = 1/4
keyingi raster nuqtasida (2.0). Endi   e   ijobiy degani, segment o'rta nuqtadan o'tadi. 
Keyingi eng yuqori koordinatali rastrli element (2,1)   da   chiziq segmentining holatini 
yaxshiroq taxmin qiladi. Demak   da   ortadi 1. Keyingi pikselni ko'rib chiqishdan oldin, 
1.ni olib tashlash orqali xatoni tuzatish kerak
e   = 1/4 - 1 = -3/4, E'tibor bering, vertikal chiziqning kesishishi   x = 2 berilgan segment 
bilan to'g'ri chiziqning 1/4 ostida yotadi   da = 1. Agar segmentni 1/2 pastga siljitsak, -3/4 
qiymatini olamiz. Keyingi piksel uchun hisoblarni davom ettirish beradi
e   = -3/4 + 3/8 = -3/8
Chunki   e   manfiy, keyin y ko'paymaydi. Aytilganlarning hammasidan kelib chiqadiki, 
xato o'qi bo'ylab kesilgan intervaldir   da   har bir raster elementda ko'rib chiqilayotgan 
segment (-1/2 ga nisbatan).
Keling, birinchi oktant uchun Bresenhem algoritmini, ya'ni. holat uchun 0 =< y =< 
Birinchi oktant uchun segmentni rastrlash uchun Bresenhem algoritmi
Algoritmning blok -sxemasi 4 -rasmda keltirilgan.
  Butun son- butun sonli funktsiyaga o'tish
x, y, x, y - butun sonlar
e - haqiqiy
o'zgaruvchan ishga tushirish
Yarim pikselli tuzatilgan ishga tushirish
asosiy tsiklning boshlanishi
vaqt (e => 0)
Bresenhem algoritmining blok diagrammasi.
Bresenhem algoritmiga misoli
(0,0) nuqtadan (5,5) nuqtaga chizilgan segmentni ko'rib chiqaylik. Bresenham 
algoritmi yordamida segmentni rastrga ajratish quyidagi natijaga olib keladi:
dastlabki sozlamalar
e = 1 - 1/2 = ½ Natija 5 -rasmda ko'rsatilgan va kutilganidek. E'tibor bering, koordinatali (5,5) 
rastrli nuqta faollashtirilmagan. Bu nuqtani keyingi davrni 0 ga x ga o'zgartirish 
orqali faollashtirish mumkin. (0,0) nuqtali faollashtirishni keyingi i oldidan Plot 
bayonotini qo'yish orqali olib tashlash mumkin.
General Bresenhem algoritmi.
Bresenxem   algoritmining   bajarilishi   to ' liq   bo ' lishi   uchun   barcha   oktantlarda  
segmentlarni   qayta   ishlash   zarur .  Algoritmda segment joylashgan to'rtburchakning 
soni va uning qiyaligi hisobga olinsa, o'zgartirish oson. Nishabning mutlaq qiymati
1dan katta bo'lsa,   da   doimiy ravishda bittaga o'zgarib turadi va qiymatni 
o'zgartirish to'g'risida qaror qabul qilishda Bresenham xato mezoni ishlatiladi   x ... 
Doimiy o'zgaruvchan (+1 yoki -1) koordinatani tanlash kvadrantga bog'liq (6 -
rasm). Umumiy algoritmni quyidagicha shakllantirish mumkin:
Bresenxemning butun sonli kvadrant algoritmi
(x1, y1) va (x2, y2) segmentning uchlari mos kelmaydi deb taxmin qilinadi
barcha o'zgaruvchilar butun son hisoblanadi.
Belgi- mos ravishda salbiy, nol va musbat argumentlar uchun -1, 0, 1 qaytaradigan 
funksiya
o'zgaruvchan ishga tushirish
x = abs (x2 - x1),   y = abs (y2 - y1)
s1 =   Belgi(x2 - x1),   s2 =   Belgi(y2 - y1)
segmentning qiyaligiga qarab x va y qiymatlarini almashish agar   y< x   keyin 
oxiri   agar ishga tushirish   e   yarim piksel tuzatilgan asosiy halqa uchun   i = 1   ga   x
 Er uchastkasi(x, y)
vaqt( e   =>0)
agar   Almashish = 1   keyin Umumlashtirilgan Bresenhem algoritmi uchun misollar tahlili.
Misol. Umumlashtirilgan Bresenhem algoritmi.
Misol uchun, (0,0) nuqtadan (-8, -4) nuqtagacha bo'lgan segmentni ko'rib chiqing.
dastlabki sozlamalar
bosqichma-bosqich sikl natijalari. Doira hosil qilish uchun Bresenhem algoritmi.
Rasterga nafaqat chiziqli, balki boshqa murakkab vazifalarni ajratish kerak. Ko'p 
sonli ishlar konus kesimlarning, ya'ni aylanalar, ellipslar, parabolalar, 
giperbolalarning parchalanishiga bag'ishlangan. Albatta, eng katta e'tibor aylanaga 
qaratiladi. Aylana yaratishning eng samarali va tushunilishi oson algoritmlaridan 
biri Bresenhamga tegishli. Birinchidan, aylananing faqat sakkizdan birini yaratish 
kerakligini unutmang. Qolgan qismlarini rasmda ko'rsatilgandek ketma -ket 
akslantirish orqali olish mumkin. 8. Agar birinchi oktant hosil qilinsa (0 dan 45 ° 
gacha soat sohasi farqli o'laroq), u holda ikkinchi oktantni y = x chizig'ini 
akslantirish orqali olish mumkin, bu birgalikda birinchi kvadrantni beradi. Birinchi
chorak, ikkinchi kvadrantdagi aylananing tegishli qismini olish uchun x = 0 
chizig'iga nisbatan aks ettiriladi. Yuqori yarim doira qurilishni yakunlash uchun y 
= 0 to'g'ri chiziqqa nisbatan aks ettirilgan.
Birinchi oktantdagi yoydan to`liq aylana hosil bo`lishi.
Algoritmni olish uchun markazda joylashgan aylananing birinchi choragini ko'rib 
chiqing. E'tibor bering, agar algoritm nuqtadan boshlangan bo'lsa   x = 0, y = 
R,   keyin birinchi kvadrantda soat yo'nalishi bo'yicha aylana hosil 
qilganda   da   argumentlarning monoton kamayuvchi funktsiyasi (9 -rasm). Xuddi 
shunday, agar kelib chiqishi bo'lsa   y =   0,   NS   =   R,   keyin soat sohasi farqli ravishda 
aylana hosil qilganda   NS   argumentning monoton kamayuvchi funktsiyasi 
bo'ladi   da.   Bizning holatda, avlod soat boshi bilan, boshida nuqtasi bilan 
tanlanadi   NS   = 0,   y = R.   Aylananing markazi va boshlanish nuqtasi aynan rastr 
nuqtalarida joylashgan deb taxmin qilinadi. Har qanday nuqta uchun, soat 
yo'nalishi bo'yicha aylantirilganda, aylanaga eng yaqin keladigan keyingi pikselni 
tanlashning uchta imkoniyati bor: gorizontaldan o'ngga, diagonal bo'yicha pastga 
va o'ngga va vertikal pastga. Fig. 10 bu yo'nalishlar mos ravishda m H, m D, m V 
deb belgilanadi   .   Algoritm bu piksellardan birini va aylana orasidagi masofaning 
kvadrati minimal bo'lgan pikselni tanlaydi. m H = | (x i + 1) 2 + (y i) 2 -R 2 |
m D = | |
m V = | (x i) 2 + (y i -1) 2 -R 2 |
Agar biz nuqta (xi, yi,) yaqinida aylananing kesishishining faqat beshta turi va 
rasmda ko'rsatilgan raster panjarasi borligini payqasak, hisoblarni soddalashtirish 
mumkin. o'n bir.
Doira va raster panjaraning kesishishi.
  Doira markazidan diagonal pikselgacha bo'lgan masofalar kvadratlari orasidagi 
farq (x i, + 1, y i)   -   1) va markazdan doira ustidagi nuqtaga R 2 ga teng
d i = (x i + 1) 2 + (y i -1) 2 -R 2
Bresenhamning segment uchun algoritmida bo'lgani kabi, tegishli pikselni tanlash 
uchun uning kattaligini emas, balki faqat xato belgisini ishlatish maqsadga 
muvofiqdir.
D i uchun< 0  диагональная   точка  (x i , + 1,  у  i   -   1) haqiqiy aylana ichida, ya'ni bu
rasmdagi 1 yoki 2 holatlar. 11. Bu vaziyatda ham piksel (x i, + 1,   da   i)   ,   ya'ni, m H,
yoki piksel (x i, + 1,   da   i   -   1), ya'ni m D. Buning uchun birinchi navbatda 1 -
holatni ko'rib chiqing va gorizontal va diagonal yo'nalishdagi aylanadan 
pikselgacha bo'lgan masofalar kvadratlari orasidagi farqni tekshiring:
d = | (x i + 1) 2 + (y i) 2 -R 2 | -| (x i + 1) 2 + (y i -1) 2 -R 2 | D uchun< 0 расстояние от окружности до диагонального пикселя больше, чем
до горизонтального .   Aksincha, agar d   > 0,   gorizontal pikselgacha bo'lgan masofa
katta. Shunday qilib,
d da<= 0 выбираем m H в (x i , + 1, у i - 1)
d> 0 uchun biz m D ni tanlaymiz (x i, + 1, y i - 1)
E = 0 bo'lsa, aylanadan ikkala pikselgacha bo'lgan masofa bir xil bo'lsa, gorizontal 
qadamni tanlang.
E qiymatini baholash uchun zarur bo'lgan hisob -kitoblar sonini kamaytirish 
mumkin, agar 1 -holatda
(x i + 1) 2 + (y i) 2 -R 2> = 0,   (x i + 1) 2 + (y i -1) 2 -R 2< 0
diagonal piksel bo'lgani uchun (x i, + 1,   da   i   -   1) har doim aylana ichida yotadi va 
gorizontal (x i, + 1,   da   i)   -   undan tashqarida. Shunday qilib, e ni formula bo'yicha 
hisoblash mumkin
d     =   (x i + 1) 2 + (y i) 2 -R 2 + (x i + 1) 2 + (y i -1) 2 -R 2
(Y i) 2 atamaning kvadratini to'ldirish va ayirish - 2y i   +   1 beradi
d = 2 [(x i + 1) 2 + (y i -1) 2 -R 2] + 2y i   -   1
Kvadrat qavs ichida e i ta'rifi va uning o'rnini bosadi
d   =   2 (e i + y i)   -   1
ifodasini ancha soddalashtiradi.
2 -rasmni ko'rib chiqing. 11 va gorizontal piksel (x i, + 1, y i) bu erda tanlanishi 
kerakligini unutmang, chunki y - monoton kamayuvchi funktsiya. E 
komponentlarini tekshirish shuni ko'rsatadiki
(x i + 1) 2 + (y i) 2 -R 2< 0,   (x i + 1) 2 + (y i -1) 2 -R 2< 0
chunki 2 -holatda gorizontal (x i, + 1, y i) va diagonal (x i, + 1, y i -1) piksellar 
aylana ichida yotadi.  Shuning uchun, d< 0, и при использовании того же самого 
критерия, что и в случае 1, выбирается пиксел (x i , + 1, у i).
Agar e i> 0 bo'lsa, u holda diagonal nuqta (x i, + 1, y i -1) aylanadan tashqarida, 
ya'ni bu 3 -va 4 -holatlar. 11. Bunday vaziyatda (x i, + 1, y i -1), yoki (x i, y i -1) 
pikselni tanlash kerakligi aniq.   .   Oldingi holatni tahlil qilish singari, tanlov 
mezonini 3 -holatni ko'rib chiqish va aylanadan diagonal m D va vertikal m V 
pikselgacha bo'lgan masofalar kvadratidagi farqni tekshirish orqali olish mumkin. ya'ni d   "   = | (x i + 1) 2 + (y i -1) 2 -R 2 | -| (x i) 2 + (y i -1) 2 -R 2 |
D uchun   "   <   0 aylanadan vertikal pikselgacha bo'lgan masofa (x i, y i -1) katta va 
siz pikselga diagonal qadam tanlashingiz kerak (x i, + 1, y i -1). Aksincha, d   "   >   0 
aylanadan diagonal pikselgacha bo'lgan masofa katta va siz pikselga vertikal 
harakatni tanlashingiz kerak (x i, y i -1). Shunday qilib,
d da   "   <=   0 m D ni tanlang (x i +1, y i -1)
d da   "   >   0 m V ni tanlang (x i, y i -1)
Bu erda, d holatida   "   = 0, ya'ni masofalar teng bo'lganda, diagonal qadam 
tanlanadi.
E komponentini tekshirish   "   buni ko'rsatadi
(x i) 2 + (y i -1) 2 -R 2> = 0,  (x i + 1) 2 + (y i -1) 2 -R 2< 0
chunki 3 -holat uchun diagonal piksel (x i +1, y i -1) aylanadan tashqarida, vertikal
piksel (x i, y i -1) uning ichida joylashgan. Bu bizga e yozishga imkon 
beradi   "   sifatida
d   "   = (x i +1) 2 + (y i -1) 2 -R 2 + (x i) 2 + (y i -1) 2 -R 2
(X i) 2 kvadratini 2x i + 1 qo'shish va ayirish orqali to'ldirish beradi
d   "   = 2 [(x i +1) 2 + (y i -1) 2 -R 2] - 2x i - 1
D i ta'rifidan foydalanib, ifoda shaklga keltiriladi
d   "   =   2 (e   -   x i   )-   1
Endi, 4 -holatni ko'rib chiqib, yana bir bor ta'kidlaymizki, vertikal piksel (x i, y i -
1) tanlanishi kerak, chunki y -monoton kamayuvchi funktsiya.   NS.
D komponentlarini tekshirish   "   4 -holat shuni ko'rsatadiki
(x i +1) 2 + (y i -1) 2 -R 2> 0, (x i) 2 + (y i -1) 2 -R 2> 0
chunki ikkala piksel ham doiradan tashqarida. Shuning uchun, e   "   > 0 va 3 -holat 
uchun ishlab chiqilgan mezondan foydalanganda m V ni to'g'ri tanlash   .
Rasmdagi 5 -holatni tekshirish kifoya. 11, bu diagonal piksel (x i, y i -1) aylanada 
yotganda sodir bo'ladi, ya'ni d i = 0. E komponentalarini tekshirish shuni 
ko'rsatadiki,
(x i +1) 2 + (y i) 2 -R 2> 0 Shuning uchun d> 0 va diagonalli piksel (x i +1, y i -1) tanlanadi. Biz 
komponentlarni baholaymiz d   "   :
(x i +1) 2 + (y i -1) 2 -R 2 = 0,    (x i +1) 2 + (y i -1) 2 -R 2< 0
va d   "   < 0, что является условием выбора правильного диагонального шага к 
(x i +1 , у i -1) . Таким образом, случай d i = 0 подчиняется тому же критерию,
что и случай d i < 0 или d i >0.  Keling, olingan natijalarni umumlashtiraylik:
Bresenhamning aylana algoritmining psevdokodli bajarilishi quyida keltirilgan.
Birinchi chorakda aylana hosil qilish uchun Bresenhemning bosqichma-
bosqich algoritmi
barcha o'zgaruvchilar butun sonlardir
o'zgaruvchan ishga tushirish
Chegara = 0
1   Er uchastkasi(x i, y i   )  agar   y i<=  Предел keyin 4
1 yoki 2, 4 yoki 5 yoki 3 -qismni ajratib ko'rsatish
agar D i< 0keyin   2, agar    D.   >   0keyin   3 agar D i = 0 bo'lsa   keyin   20
ish ta'rifi 1 yoki 2  2 d = 2d i + 2y i - 1
agar d<= 0keyin   10, agar d> 0 bo'lsa   keyin   20
ish ta'rifi 4 yoki 5    3 d = 2D i + 2x i   -   1
agar   d   <=   0keyin   20,  agar   d   >   0   keyin   30
quyidagi qadamlar
10 x i = x i + 1,  D i = D i + 2x i + 1
gO1 ga
20 x i = x i + 1,  D i = D i + 2x i - 2y i + 2
1 ga o'ting  4 tugatish
Gorizontal o'qda algoritmni tugatish uchun limit o'zgaruvchisi nolga o'rnatiladi, 
natijada birinchi chorakda aylana hosil bo'ladi. Agar faqat bitta oktant kerak bo'lsa,
ikkinchi oktantni Limit = sozlamasi yordamida olish mumkin   Butun son (R / sqrt  (2)), va birinchi - y = x to'g'ri chiziqqa nisbatan ikkinchi oktantni aks ettirish orqali
(8 -rasm).  Algoritmning blok diagrammasi rasmda ko'rsatilgan.  
Bezier egri chizig'i va uning geometrik algoritmi.
Bezier egri chiziqlari 1960 -yillarda Renault -dan Per Bezier va Citroen shahridan 
Pol de Kastelau tomonidan mustaqil ravishda ishlab chiqilgan bo'lib, ular 
avtomobil kuzovlarini loyihalashda ishlatilgan. De Kastellning kashfiyoti biroz 
oldinroq Bezier tomonidan qilinganiga qaramay (1959), uning tadqiqotlari nashr 
etilmadi va 1960 -yillarning oxirigacha kompaniya tomonidan sanoat siri sifatida 
yashiringan. Egri chiziqlar birinchi marta 1962 yilda frantsuz muhandisi Per Bezier
tomonidan taqdim etilgan, u ularni de Kasteldan mustaqil ravishda ishlab chiqib, 
ularni avtomobil tanalarini kompyuter yordamida loyihalashda ishlatgan. Egri 
chiziqlar Bezier nomi bilan atalgan va de Castellier nomi egri chiziqlarni aniqlash 
uchun ishlab chiqqan rekursiv uslubga berilgan (de Castellier algoritmi).
Keyinchalik, bu kashfiyot kompyuter yordamida dizayn tizimlari va kompyuter 
grafikasi dasturlari uchun eng muhim vositalardan biriga aylandi. Bezier egri	 chizig'i   Bu ifoda orqali berilgan parametrli egri chiziq
, 0 < t <1
qo'llab -quvvatlash tepaliklari vektorlari komponentlarining vazifasi qayerda va 
-   asosiy funktsiyalar   Bezier egri chizig'i ham deyiladi   Bernshteyn polinomlari.
bu erda n - polinomning darajasi, i - mos yozuvlar tepasining tartib raqami.
Birinchi chorakda aylana hosil qilish uchun Bresenhamning bosqichma-bosqich 
algoritmining blok diagrammasi.
Bezier egri chiziqlarining turlari
Chiziqli egri chiziqlar. N = 1 uchun egri chiziq to'g'ri chiziqli segment, P0 va P1 
ankraj nuqtalari uning boshi va oxirini belgilaydi.
Egri chiziq quyidagi tenglama bilan berilgan:    ,
Kvadrat egri chiziqlar. (n = 2) 3 ta nazorat nuqtasi bilan o'rnatiladi: P0, P1 va P2.
TrueType shriftlari va SWF fayllaridagi belgilar shaklini tasvirlash uchun spline -
dagi kvadratik Bezier egri chiziqlari ishlatiladi.
Kubik egri chiziqlar. (n = 3) quyidagi tenglama bilan tavsiflanadi:
2 yoki 3 o'lchovli bo'shliqda ko'rsatilgan P0, P1, P2 va P3 to'rtta langar nuqtasi egri
shaklini aniqlaydi.
Chiziq P0 nuqtadan P1 tomon boshlanib, P2 tomondan unga yaqinlashayotgan P3 
nuqtada tugaydi. Ya'ni, egri chiziq P1 va P2 orqali o'tmaydi, ular uning yo'nalishini
ko'rsatish uchun ishlatiladi. P0 va P1 orasidagi segment uzunligi egri chiziq P3 
tomon qanchalik tez burilishini aniqlaydi.
Matritsa shaklida kubik Bezier egri chizig'i quyidagicha yoziladi:
,
qaerga chaqiriladi   asosiy matritsa   Bezier: PostScript, Metafont va GIMP kabi zamonaviy grafik tizimlar egri shakllarni 
ifodalash uchun kubik egri chiziqlardan tashkil topgan Bezier chiziqlaridan 
foydalanadi.
Kompyuter grafikasida dastur
Ta'rif va manipulyatsiyaning soddaligi tufayli Bezier egri chizig'i tekis chiziqlarni 
modellashtirish uchun kompyuter grafikasida keng qo'llaniladi. Butun egri chiziq 
langar nuqtalarining qavariq qobig'ida yotadi. Bezier egri chizig'ining bu 
xususiyati, bir tomondan, egri chiziqlarning kesishish nuqtalarini topish vazifasini 
ancha osonlashtiradi (agar qavariq korpuslar kesishmasa, egri chiziqlar 
kesishmasa), boshqa tomondan bu sizga burilish nuqtalari yordamida egri chiziqni 
ingl. Bundan tashqari, egri chiziqning affin transformatsiyalari (tarjima, 
masshtablash, aylantirish) ankraj nuqtalariga mos transformatsiyalarni qo'llash 
orqali ham amalga oshirilishi mumkin. Eng muhimi, ikkinchi va uchinchi 
darajadagi Bezier egri chiziqlari (kvadratik va kubik). Qayta ishlash jarayonida 
yuqori darajadagi egri chiziqlar ko'proq hisob -kitoblarni talab qiladi va amaliy 
maqsadlarda kam ishlatiladi.  Murakkab chiziqlarni chizish uchun Bezierning 
individual egri chiziqlari ketma -ket Bezier chizig'ida bir -biriga ulanishi mumkin. 
Ikki egri chizig'ining kesishish nuqtasida silliq chiziqni ushlab turish uchun ikkala 
egri chiziqning qo'shni tutash nuqtalari bir chiziqda bo'lishi kerak. Adobe 
Illustrator yoki Inkscape kabi vektorli grafik dasturlarda bu yo'llar deb nomlanadi.
  Xulosa.
Xulosa qilib aytganda, ikki chiziqni kesishish uchun tekshirish 
algoritmlaridan biri bu Bresenhem algoritmi haqida ma’lumotlar keltirdik. Bu 
algoritmga ma’limot keltirganimizda biz algoritm, bresenham algoritmi,  
qo’llanilishi, asosiy góyasi, xato grafigi va birinchi oktant uchun rastrlash uchun 
bresenham algoritmi, blok diagrammasi, Generall  Bresenham algoritmi, tahliliy 
misollar, oktantdagi yoydan aylana hosil qilish,doira hosil qilish, doira va raster 
panjaraning kesishishi,aylana hosil qilishni bosqichma-bosqich hosil qilish, Bezier 
egri chiziq algoritmi va bu chiziqlarning turlari, kompyuter grafikasida dastur 
tushunchalari haqida ma’lumotlar keltirdik. Bular haqida ozroq ma’lumot 
keltiradigan bo’lsak:  Bresenham algoritmi dastlab raqamli plotterlar uchun ishlab 
chiqilgan bo'lsa -da, LCD monitorlar uchun ham bir xil darajada mos keladi. 
Algoritm chiziq segmentini ko'rsatish uchun optimal raster koordinatalarini 
tanlaydi. Ish paytida koordinatalardan biri - x yoki y (qiyalikka qarab) - bittaga 
o'zgaradi. Boshqa koordinatani o'zgartirish (0 yoki 1 ga) chiziqning haqiqiy holati 
va tarmoqning eng yaqin koordinatalari orasidagi masofaga bog'liq. Biz bu  masofani xato deb ataymiz.  Bresenxem algoritmining bajarilishi to'liq bo'lishi 
uchun barcha oktantlarda segmentlarni qayta ishlash zarur. Algoritmda segment 
joylashgan to'rtburchakning soni va uning qiyaligi hisobga olinsa, o'zgartirish 
oson. Nishabning mutlaq qiymati 1dan katta bo'lsa,   da   doimiy ravishda bittaga 
o'zgarib turadi va qiymatni o'zgartirish to'g'risida qaror qabul qilishda Bresenham 
xato mezoni ishlatiladi   x ... Doimiy o'zgaruvchan (+1 yoki -1) koordinatani tanlash 
kvadrantga bog'liq.  Rasterga nafaqat chiziqli, balki boshqa murakkab vazifalarni 
ajratish kerak. Ko'p sonli ishlar konus kesimlarning, ya'ni aylanalar, ellipslar, 
parabolalar, giperbolalarning parchalanishiga bag'ishlangan. Albatta, eng katta 
e'tibor aylanaga qaratiladi. Aylana yaratishning eng samarali va tushunilishi oson 
algoritmlaridan biri Bresenhamga tegishli. Birinchidan, aylananing faqat sakkizdan
birini yaratish kerakligini unutmang. Qolgan qismlarini rasmda ko'rsatilgandek 
ketma -ket akslantirish orqali olish mumkin. Gorizontal o'qda algoritmni tugatish 
uchun limit o'zgaruvchisi nolga o'rnatiladi, natijada birinchi chorakda aylana hosil 
bo'ladi. Agar faqat bitta oktant kerak bo'lsa, ikkinchi oktantni Limit = sozlamasi 
yordamida olish mumkin. Bresenhamning segment uchun algoritmida bo'lgani 
kabi, tegishli pikselni tanlash uchun uning kattaligini emas, balki faqat xato 
belgisini ishlatish maqsadga muvofiqdir. Bezier egri chiziqlari 1960 -yillarda 
Renault -dan Per Bezier va Citroen shahridan Pol de Kastelau tomonidan mustaqil 
ravishda ishlab chiqilgan bo'lib, ular avtomobil kuzovlarini loyihalashda 
ishlatilgan. De Kastellning kashfiyoti biroz oldinroq Bezier tomonidan qilinganiga 
qaramay (1959), uning tadqiqotlari nashr etilmadi va 1960 -yillarning oxirigacha 
kompaniya tomonidan sanoat siri sifatida yashiringan. Egri chiziqlar birinchi marta
1962 yilda frantsuz muhandisi Per Bezier tomonidan taqdim etilgan, u ularni de 
Kasteldan mustaqil ravishda ishlab chiqib, ularni avtomobil tanalarini kompyuter 
yordamida loyihalashda ishlatgan. Egri chiziqlar Bezier nomi bilan atalgan va de 
Castellier nomi egri chiziqlarni aniqlash uchun ishlab chiqqan rekursiv uslubga 
berilgan (de Castellier algoritmi).
Keyinchalik, bu kashfiyot kompyuter yordamida dizayn tizimlari va kompyuter 
grafikasi dasturlari uchun eng muhim vositalardan biriga aylandi. PostScript, 
Metafont va GIMP kabi zamonaviy grafik tizimlar egri shakllarni ifodalash uchun 
kubik egri chiziqlardan tashkil topgan Bezier chiziqlaridan foydalanadi. Butun egri
chiziq langar nuqtalarining qavariq qobig'ida yotadi. Bezier egri chizig'ining bu 
xususiyati, bir tomondan, egri chiziqlarning kesishish nuqtalarini topish vazifasini 
ancha osonlashtiradi (agar qavariq korpuslar kesishmasa, egri chiziqlar 
kesishmasa), boshqa tomondan bu sizga burilish nuqtalari yordamida egri chiziqni 
ingl. Bundan tashqari, egri chiziqning affin transformatsiyalari (tarjima, 
masshtablash, aylantirish) ankraj nuqtalariga mos transformatsiyalarni qo'llash 
orqali ham amalga oshirilishi mumkin. Eng muhimi, ikkinchi va uchinchi 
darajadagi Bezier egri chiziqlari (kvadratik va kubik). Qayta ishlash jarayonida 
yuqori darajadagi egri chiziqlar ko'proq hisob -kitoblarni talab qiladi va amaliy 
maqsadlarda kam ishlatiladi. Murakkab chiziqlarni chizish uchun Bezierning 
individual egri chiziqlari ketma -ket Bezier chizig'ida bir -biriga ulanishi mumkin.  Ikki egri chizig'ining kesishish nuqtasida silliq chiziqni ushlab turish uchun ikkala 
egri chiziqning qo'shni tutash nuqtalari bir chiziqda bo'lishi kerak. Adobe 
Illustrator yoki Inkscape kabi vektorli grafik dasturlarda bu yo'llar deb nomlanadi. 
Algoritmlashning asosiy shartlaridan biri bu – dasturning ishlash tezligi. Kod 
qanchalik optimal bo`lsa, dastur shuncha tez ishlaydi. Dastur tezligini 
pasaytiruvchi omillar bu – loop , ya`ni takrorlanishlar. Sikl ichida sikl ochish yoki 
sikl ichida shart tekshirish dastur tezligini ma`lum darajada pasaytiradi. Hayotiy 
misol keltiraman: 7ta 45ni bir biriga qo`shing. Har birini alohida qo`shib chiqish 
uchun vaqt talab etiladi. Ya`ni 7 marta bir xil amalni bajarish kerak. Xuddi shuni 
ko`paytirish amali orqali kamroq vaqt sarflab amalga oshirish mumkin. Har birimiz
arifmetik progressiya haqida tushunchaga egamiz. Hadlari bir biridan ma`lum d 
songa farq qiladigan sonli ketma-ketlik. Shuni nta hadi yig`indisini toppish uchun 
n marta har safar yangi hadni topish va uni oldingi sonlar yig`indisiga qo`shish 
talab etiladi. Bu esa juda ko`p vaqt talab qiladi. Aynan shu muammo matematikada
oddiy formula orqali hal etilgan. Bu muammoni hal etish formulasi esa albatta 
tafakkur mahsuli hisoblanadi. Siz ham yuqori darajali masalalarni yechishda ana 
shunday ixtirolar qilasiz yoki boshqa ixtirolardan foydalanasiz.
Algoritmlashning asosi matematika hisoblanadi. Bunda fikrlash muhim rol 
o`ynaydi. So`zimni quyidagicha isbot qilaman. Dasturlash sanoatida gigant 
korporatsiya hisoblangan Microsoftning asoschisi Bill Geytsning shunday so`zlari 
dasturchilar orasidda mashhur:"Qo`shish va ayirishni biladigan har qanday inson 
dasturchi bo`la oladi". Bu so`zlarni mag`zini chaqish uchun sizlarni boshlang`ich 
sinflarga qaytishga taklif etaman. Har birimiz boshlang`ich sinflarda qo`shish va 
ayirish amallarini o`rgangan edik. Ko`pchilik buni barmoqlari orqali bajargan. 
Chunki barmoqlar 10ta va raqamlarni qo`shish va ayirishda qo`l keladi. 
Keyinchalik matematik evolutsiyamiz sonlar bilan qo`shish va ayirish amallarini 
bajarish bosqichiga yetib keladi. Bu rivojlanish jarayoni yangi amallar bilan boyidi
va endi bir xil raqamlarni bir necha marta qo`shishni osonlashtirish uchun 
ko`paytirish jadvalini o`rgandik. E`tibor bering, ko`paytirish algoritmi qo`shish 
algoritmining asosiga qurilgan. Rivojlanishimiz davom etib, endilikda qoldiqli 
bo`lish va shu kabi murakkabroq amallarga o`tamiz. Maktabni bitirish vaqtida esa 
juda murakkab amallarni ham bajara oladigan darajada bo`lamiz. Ana 
ko`rdingizmi, hamma murakkab amallarning asosi qo`shish va ayirishdan 
boshlanadi. U yog`i esa fikrlash doirangiz kengligiga bog`liq. Demak, 
dasturlashdagi asosiy masalalar matematik fikrlashga bog`liq
Foydalanilgan adabiyotlar.
Alijonov   O . I .,  Xolmurzaev   A . A  .  Muhandislk grafikasi. - Farg‘ona, «Texnika» 
nashriyoti, 2005. 2. Ismatullaev R. Chizma geometriya. -  Т ., 2003. 3 .M u ro d o v 
Sh. G idrotexniklar uchun chizm a geom etriya. -  Т .: 0 ‘qituvchi, 1991. 4. Murodov
Sh., Hakimov L., Odilov P., Shomurodov A ., Jumaev M. Chizma geometriya  kursi. - Т  .: 0 ‘qituvchi, 1988. 5. Xorunov R. Chizma geometriya kursi. -  Т .: 0 
‘qituvchi, 1995. 6.  Бубенников  A.B.  Начертательная   геометрия . -  М .:  Высшая  
школа , 1985.  7. Гордон В.О ., Семенцов-Огиевский М .А. Начертательная 
геом етрия/П од ред. H.H. Крылова - М.: Высшая школа, 2000. 8. М 
ихайленко В .E., П оном арев А .М . И нж енерная граф ика: Учебник. -К иев: 
Высшая школа, 1990. 9. Фролов С.А. Начертательная геометрия. - М.: 
Машиностроение, 1983. 10. Чекмарев A.A. Начертательная геометрия и 
черчение. - М.: Вы сшая школа, 1999. Sh.K.Murodov va boshqalar, Chizma 
geometriya, T.:, „Iqtisodmoliya“„ 2006 2. Sh.K.Murodov, Amaliy geometriya, 
TDPU-2020 3. l.Rahmonov, A.Valiev. Chizmachilik, “Voris-nashriyot” T.:,2011 
4. A.Valiev. Chizmachilik (Geometrik chizmachilik) T.:, TDPU rizografi, 2013. 5. 
M.Xalimov. Chizma geometriya va muhandislik grafikasi.:, “Vorisnashriyot”, 
2013. Qo’shim cha adabiyotlar 6. Mirziyoev Sh.M. Buyuk kelajagimizni mard va 
olijanob xalqimiz bilan birga quramiz. Toshkent, , , 0 ‘zbekiston“, 2017 yil, 488 
bet. 7. Mirziyoev Sh.M. Qonun ustuvorligi va inson manfaatlarini ta’minlashyurt 
taraqqiyoti va xalq faravonligining garovi.  Toshkent, 7 „ O‘zbekiston“,

MAVZU: IKKI CHIZIQNI KESISHISH UCHUN TEKSHIRISH ALGORITMLARI. MUNDARIJA Kirish. ........................................................................................................................................................... 2 Bresenhem algoritmi ................................................................................................................................... 3 Bresenhem algoritmi qo’llanilishi. ............................................................................................................... 7 Bresenhem algoritmining asosiy g'oyasi. ................................................................................................... 11 Bresenxem algoritmidagi xato grafigi. ....................................................................................................... 12 Birinchi oktant uchun segmentni rastrlash uchun Bresenhem algoritmi ................................................... 13 Bresenhem algoritmining blok diagrammasi. ............................................................................................ 14 General Bresenhem algoritmi. ................................................................................................................... 15 Umumlashtirilgan Bresenhem algoritmi uchun misollar tahlili. ................................................................. 16 Doira hosil qilish uchun Bresenhem algoritmi. .......................................................................................... 17 Birinchi oktantdagi yoydan to`liq aylana hosil bo`lishi. .............................................................................. 17 ................................................................................................................................................................... 18 Birinchi chorakda aylana hosil qilish uchun Bresenhemning bosqichma-bosqich algoritmi ...................... 21 Bezier egri chizig'i va uning geometrik algoritmi. ...................................................................................... 22 Bezier egri chiziqlarining turlari ................................................................................................................. 23 Kompyuter grafikasida dastur .................................................................................................................... 24 Xulosa. ...................................................................................................................................................... 24 Foydalanilgan adabiyotlar. ......................................................................................................................... 26

Kirish . Algoritm so`zi barchamizga ma`lum bo`lganidek, vatandoshimiz Muhammad ibn Muso al-Xorazmiyning ismini yevropacha talaffuzidan kelib chiqqan. Demak, hozirda keng foydalanilayotgan algoritmlashning asosi bizning Vatanimizdan boshlangan. Maktab informatika kursidan ma`lumki, algoritm bu – ma`lum masalani hal qilish uchun bajarish kerak bo`lgan amallar ketma-ketligi. O`sha mashhur choy damlash algoritmidan chekingan holda hayotiy misol keltiramiz. Hayotda eng ko`p bo`ladigan holatimiz bu uyqu. Ko`pchilik rejim bilan uxlaydi , ya`ni uxlashga ma`lum bir vaqtni belgilagan. Misol uchun siz uxlashga yotish uchun 22:00ni tanladingiz. Har safar soatga qaraganingizda uxlash vaqti bo`lgan yoki bo`lmaganini tekshirasiz. Miyangizda esa quyidagi jarayon bo`ladi: Bu oddiy uyquga yotish algoritmi edi. Hayotda o`zimiz bilmagan holatda algoritmlardan foydalanamiz. Miyamiz juda tez ishlagani sabab qadamlar ketma- ketligi haqida o`ylab ko`rmaymiz. Endi maqolamizning asosiy qismi, dasturlashda algoritmlashga o`tamiz. Dasturlashda algoritm bu – masalani yechish uchun bajarilishi kerak bo`lgan amallar ketma-ketligini kodga o`girilgan varianti. Bunda masalani yechish uchun miyamizda kechayotgan jarayonni kompyuter tushunadigan qilib yozish talab etiladi. Algoritmlashning asosi matematika hisoblanadi. Bunda fikrlash muhim rol o`ynaydi. So`zimni quyidagicha isbot qilaman. Dasturlash sanoatida gigant korporatsiya hisoblangan Microsoftning asoschisi Bill Geytsning shunday so`zlari dasturchilar orasidda mashhur:"Qo`shish va ayirishni biladigan har qanday inson dasturchi bo`la oladi". Bu so`zlarni mag`zini chaqish uchun sizlarni boshlang`ich sinflarga qaytishga taklif etaman. Har birimiz boshlang`ich sinflarda qo`shish va ayirish amallarini o`rgangan edik. Ko`pchilik buni barmoqlari orqali bajargan. Chunki barmoqlar 10ta va raqamlarni qo`shish va ayirishda qo`l keladi. Keyinchalik matematik evolutsiyamiz sonlar bilan qo`shish va ayirish amallarini bajarish bosqichiga yetib keladi. Bu rivojlanish jarayoni yangi amallar bilan boyidi va endi bir xil raqamlarni bir necha marta qo`shishni osonlashtirish uchun ko`paytirish jadvalini o`rgandik. E`tibor bering, ko`paytirish algoritmi qo`shish algoritmining asosiga qurilgan. Rivojlanishimiz davom etib, endilikda qoldiqli bo`lish va shu kabi murakkabroq amallarga o`tamiz. Maktabni bitirish vaqtida esa juda murakkab amallarni ham bajara oladigan darajada bo`lamiz. Ana ko`rdingizmi, hamma murakkab amallarning asosi qo`shish va ayirishdan boshlanadi. U yog`i esa fikrlash doirangiz kengligiga bog`liq. Demak, dasturlashdagi asosiy masalalar matematik fikrlashga bog`liq.

Algoritmlashning asosiy shartlaridan biri bu – dasturning ishlash tezligi. Kod qanchalik optimal bo`lsa, dastur shuncha tez ishlaydi. Dastur tezligini pasaytiruvchi omillar bu – loop, ya`ni takrorlanishlar. Sikl ichida sikl ochish yoki sikl ichida shart tekshirish dastur tezligini ma`lum darajada pasaytiradi. Hayotiy misol keltiraman: 7ta 45ni bir biriga qo`shing. Har birini alohida qo`shib chiqish uchun vaqt talab etiladi. Ya`ni 7 marta bir xil amalni bajarish kerak. Xuddi shuni ko`paytirish amali orqali kamroq vaqt sarflab amalga oshirish mumkin. Har birimiz arifmetik progressiya haqida tushunchaga egamiz. Hadlari bir biridan ma`lum d songa farq qiladigan sonli ketma-ketlik. Shuni nta hadi yig`indisini toppish uchun n marta har safar yangi hadni topish va uni oldingi sonlar yig`indisiga qo`shish talab etiladi. Bu esa juda ko`p vaqt talab qiladi. Aynan shu muammo matematikada oddiy formula orqali hal etilgan. Bu muammoni hal etish formulasi esa albatta tafakkur mahsuli hisoblanadi. Siz ham yuqori darajali masalalarni yechishda ana shunday ixtirolar qilasiz yoki boshqa ixtirolardan foydalanasiz. Dasturlashda algoritmlashning asosan 4 turi mavjud: 1.Saralash 2.Qidirish 3.Grafiklar 4.Stringlar Ularning har biriga keyingi maqolalarimizda alohida to`xtalib o`tishga harakat qilamiz. Hozir esa oddiy algoritmlaning kodga o`girilish jarayonini ko`rib chiqamiz. Bresenhem algoritmi Ikki chiziqni kesishish uchun tekshirish algoritmlaridan biri haqida aytsak bu- Bresenhem algoritmidir.Bresenxem algoritmi Jek E. Bresenxem tomonidan 1962 yilda taklif qilingan va u tekislikda nuqtalari bo'lgan raqamlarni chizish uchun mo'ljallangan. Bu algoritm ekranda chiziqlar chizish uchun kompyuter grafikasida keng qo'llaniladi. Algoritm ikki o'lchovli rastrning qaysi nuqtalarini bo'yash kerakligini aniqlaydi. C = y1 ∙ x2-y2 ∙ x1 Koordinatali har qanday raster nuqtasi uchun ( xi;yi) qiymat funktsiyasi Bresenhem algoritmining grafik talqini rasmda ko'rsatilgan .

Bresenhem algoritmi yordamida tekislikda to'g'ri chiziq segmentlarini chizish uchun biz to'g'ri chiziq tenglamasini umumiy shaklda yozamiz. f (x, y) = Ax + By + C = 0 bu erda koeffitsientlar A va B koeffitsientlar bilan ifodalanadi k va b to'g'ri chiziq tenglamalari. Agar to'g'ri chiziq koordinatali ikkita nuqta orqali o'tsa ( x1;y1) va ( x2;y2), keyin to'g'ri chiziq tenglamasining koeffitsientlari formulalar bilan aniqlanadi A = y2-y1, B = x1-x2 f (xi, yi)= 0, agar nuqta to'g'ri chiziqda bo'lsa f (xi, yi)> 0, agar nuqta to'g'ri chiziq ostida bo'lsa f (xi, yi) qayerda i- ko'rsatiladigan nuqta raqami. Shunday qilib, qaysi nuqtalarni hal qilish usullaridan biri P. yoki Q(rasmga qarang) keyingi bosqichda ko'rsatiladi, bu segmentning o'rtasini solishtirish | P-Q | funktsiya qiymati bilan f (x, y)... Agar qiymat bo'lsa f (x, y) chiziq segmentining o'rta nuqtasidan pastda joylashgan | P-Q |, keyin keyingi ko'rsatiladigan nuqta nuqta bo'ladi P., aks holda - nuqta Q .

Funktsiyaning ortishini yozamiz ∆f = A∆x + B∆y Nuqtani koordinatalar bilan ko'rsatgandan so'ng (xi, yi) ko'rsatiladigan keyingi nuqta aniqlanadi. Buning uchun o'sish ko'rsatkichlari taqqoslanadi Δ x va Yy, mos keladigan koordinata bo'ylab harakatning mavjudligi yoki yo'qligini tavsiflaydi. Bu o'sish 0 yoki 1 bo'lishi mumkin. Shuning uchun biz nuqtadan o'ngga harakat qilsak, biz nuqtadan o'ngga va pastga siljiganimizda ∆f = A + B, biz bir nuqtadan pastga siljiganimizda, demak Biz segment boshining koordinatalarini bilamiz, ya'ni aniq to'g'ri chiziqda yotadigan nuqta. Biz birinchi nuqtani qo'yamiz va qabul qilamiz f= 0. Siz joriy nuqtadan ikki qadam - vertikal (gorizontal) yoki diagonal bo'yicha bitta pikselga o'tishingiz mumkin. Vertikal yoki gorizontal harakatlanish yo'nalishi qiyalik nisbati bilan belgilanadi. Nishab burchagi 45º dan past bo'lsa va | A |<|B| har bir qadamda harakat gorizontal yoki diagonalda amalga oshiriladi. Nishab burchagi 45º dan yuqori bo'lsa, har bir qadamda harakat vertikal yoki diagonalda amalga oshiriladi. Shunday qilib, egilgan segmentni chizish algoritmi quyidagicha: C ++ ilovasi : 1. #qo'shing 2. std nomlar maydonidan foydalanish; 3. bo'sh Brezenhem (char ** z, int x0, int y0, int x1, int y1) 4. { 5. int A, B, belgisi; 6. A = y1 - y0; 7. B = x0 - x1; 8. agar (abs (A)> abs (B)) belgisi = 1; 9. else belgisi = -1; 10. int signa, belgi; 11. agar (A.< 0) signa = -1; 12. else signa = 1; 13. agar (B.< 0) signb = -1; 14. else signb = 1; 15. int f = 0; 16. z = "*";