81
qolib ketadi, agarda 1 dan kichik qadam bilan aylana radiusi
oshirilsa ko‘pgina piksellar qayta tahlil qilinib qoladi.
Agarda kvadrat konturi bo‘yicha yurilsa, qidiruvni tez
va sodda
amalga oshirish mumkin bo‘ladi. Biroq kvadrat perimetridagi nuqta
markazdan har xil masofada bo‘ladi. Bu muammoning yechimi
qidiruvni ikki bosqichli siklda tashkil qilishdan iboratdir.
Avvalo, markazi (
x,y
) nuqtada bo‘lgan kvadrat o‘lchamlarini
perimetrda rastrning nol bo‘lmagan qiymatlari topilmagunga qadar
ketma – ket oshirib boriladi.
R
1
masofa hisoblanadi. Agar bu masofa
(kvadrat o‘lchami +1)dan katta bo‘lsa, u holda, qidiruvning ikkinchi
bosqichi boshlanadi. Buning uchun, kvadrat o‘lchamlarini
R
1
qiymatga qadar oshiramiz.
Agarda bunda
masofali yangi
nuqta topilsa, u holda qidiruv davom etadi. Bu yerda shuni
ta’kidlash lozimki, kvadrat o‘lchami sifatida uning tomonining
yarmi olinadi.
Yaqin nuqtani qidirish algoritmi yozuvini keltiramiz:
1.
l
=1;
c
=0;
r
– maksimal butun son.
2.
Kvadrat perimetri bo‘ylab
qidiruv
KPQ (l, x, y, r)
l
1,2,3,…lar uchun.
3.
Agarda piksel topilgan bo‘lsa, u holda: {.
4.
Masofa
r
=
R
1 ; piksel qiymati
c
=
c
1.
5.
Agar
, u holda: {.
6.
7.
Kvadrat perimetri bo‘ylab qidiruv
KPQ
(
k,x,y,r
).
8.
Agarda piksel topilgan bo‘lsa va
, u holda
.
9.
k
=
k
+1.
10.
Agar
, u holda 7 bandga o‘tish. }}.
11.
Agar
c
nol bo‘lmasa, u holda bu qidirlayotgan nuqta
topilmaganligi bildiradi. Bu nuqtagacha bo‘lgan masofa (
r
) va
piksel rangi keyinchalik to‘ldirish algoritmida ishlatiladi.
Kvadrat perimetri bo‘ylab piksellar qidiruvi algoritmi bu yerda
KPQ
(
l,x
c
,y
c
,r
), bu yerda
l
-kvadrat yarim o‘lchami;
–
kvadrat markazi koordinatalari;
r
– taqqoslash uchun masofa –
agarda kattaroq
masofali piksel topilsa, u holda bu hisobga
olinmaydi.
KPQ
protsedurasi ishlashi natijasida topilgan piksel
82
rangi (
c
) aniqlanadi va markazgacha bo‘lgan masofa (
) aniqlanadi.
KPQ
algoritmi quydagicha bo‘lishi mumkin.
1.
2.
c
=
piksel
(
)
agar
c
nol bo‘lmasa, u holda,
14ga o‘tish;
3.
c= piksel
(
)
agar
c
nol bo‘lmasa, u
holda,14ga o‘tish;
4.
c= piksel
(
)
agar
c
nol bo‘lmasa, u holda,
14ga o‘tish;
5.
c= piksel
(
)
agar
c
nol bo‘lmasa, u holda,
14ga o‘tish;
6.
c= piksel
(
)
agar
c
nol bo‘lmasa, u holda,
14ga o‘tish;
7.
c= piksel
(
)
agar
c
nol bo‘lmasa, u holda,
14ga o‘tish;
8.
c= piksel
(
)
agar
c
nol bo‘lmasa, u holda,
14ga o‘tish;
9.
c= piksel
(
)
agar
c
nol bo‘lmasa, u holda,
14ga o‘tish;
10.
11.
12.
13. Agar
y holda 2ga o‘tish:
14.
dan chiqarilgan ildiz.
Do'stlaringiz bilan baham: