21
Primitivning yuzada bo‘lmasligini aniqlash algoritmi primitivning
biror bir nuqtasiga tushuvchi ko‘rish nuri
va shu nuqtaning tashqi
normali
orasidagi
β burchakni tahliliga asoslanadi.
β burchakning
o‘tkirligi yoqning ko‘rinarli ekanligini, to‘g‘ri yoki o‘tmas burchak
esa yoqning ko‘rinmasligini anglatadi.
va
vektorlarning skalyar
ko‘paytmasi yordamida olinuvchi burchak kosinusi ishorasiga ko‘ra
bu burchak kattaligi haqida xulosa chiqarish mukin bo‘ladi:
| | | |
( ) da primitiv ko‘rinarli, aks holda ko‘rinmas bo‘ladi.
Vektor algebrasi
va vektorlarning skalyar ko‘paytmasini topish
uchun quyidagi ifodani beradi:
bu yerda,
va
mos ravishda
vektorlarning
koordinatalari, ya’ni ularning koordinata o‘qlaridagi proeksiyalari.
Fazoda perspektiv transformatsiya amalga oshirish orqali
primitivlarning
ko‘rinmas
bo‘lishini
aniqlashni
ancha
soddalashtirish mumkin. Bunda perspektiv (markaziy) proeksiyalash
parallel proeksiyaga almashtiriladi va barcha ko‘rish
nurlari
chuqurlik o‘qiga parallel bo‘ladi. U holda
| |
bo‘ladi. Biror bir sirt normalning koordinatalari bu sirtni ifodalovchi
( ) funksiya xususiy hosilalari orqali aniqlanadi. Agarda
primitiv tekis sirt bo‘lsa, u holda, uni ifodalovchi funksiya quyidagi
ko‘rinishda bo‘ladi:
( )
bu yerda,
A, B, C, D lar tekislik holatini belgilovchi sonli kattaliklar.
Bu holat uchun
quyidagi ifoda bilan aniqlanadi:
va ko‘rinuvchanlik belgisi
juda sodda ko‘rinish oladi:
Agarda yuzadagi primitivlar kuzatuvchi fazosida oldida turgan
obyekt bilan to‘silgan bo‘lsa, ekranda ularning tasviri to‘laligicha
yoki qisman ko‘rinmaydi. Buning uchun ko‘rinmas
qismlarni olib
22
tashlashga mo‘ljallangan ko‘pgina algoritmlar mavjud [18].
Ularning asosida har xil primitivlar qismlarining joylashuv
chuqurligini analiz qilish yotadi. Kuzatuv nuqtasiga eng yaqin
qismlar ko‘rinuvchi hisoblanadilar. Zamonaviy grafik tizimlarda
ekran tekisligiga primitiv elementlarini
proeksiyalash jarayonida
ishlatiladigan
z-bufer va uning modifikatsiya qilingan algoritmlari
keng tadbiqini topgan. Proeksiyalash jarayonida navbatdagi element
koordinatalari hisoblanishi bo‘yicha xotirada ko‘p razryadli
yacheyka tanlanadi va unga elementning rang yorqinligi kodi va uni
kuzatuvchidan yashirish kodi (chuqurlik kodi) yoziladi. Agarda vaqt
o‘tishi bilan boshqa primitiv elementi xotira buferining shu
manzilini olsa, u holda uning yashirish kodi
buferning shu manziliga
ilgari kiritilgan yashirish kodi bilan taqqoslanadi. Taqqoslash
natijasi bo‘yicha buferga chuqurlik kodi kichik element haqidagi
ma’lumot
saqlanadi.
Natijada,
bufer
mazmuni
ekranga
chiqarilayotganda ekranning har bir pikseli yoritilishida bitta
proektorda yotuvchi barcha elementlardan
kuzatuvchiga eng yaqin
primitiv elementi tushadi. Primitivlarning to‘silgan qismlarini
z-
bufer algoritmi yordamida olib tashlash rastr almashtirishlarida
ko‘riladi.