Сламкулова М.Б., Құрманалиева Д.М.

 

М.Х.Дулати атындағы Тараз мемлекеттік университеті, Қазақстан

 

Шынайы үшөлшемді суреттерді синтездеудің бағдарламасын өңдеу технологиясы бойынша жобалық шешімдері

 

 

Құбылмалы беттер әдісі. Бұл жерде әрбір қадамда жиек беттері екі үзік сызықтарды құрады- жоғарғы беттік сызық және төменгі беттік сызық. Әрбір жаңа беттің бейнеленуі барысында жоғарғы беттен жоғары орналасқан беттер мен төменгі беттен төмен орналасқан беттер ғана көрінеді. Сәйкесінше, әрбір жаңа жиек жоғарғы бетті жоғары көтеріп, төменгі бетті  төмен түсіреді. Бұл әдіс z=f(x,y) функциясымен сипатталатын беттерді көрсету үшін жиі қолданылады.

Бұл әдістің жалпы көрінісі төмендегідей беріледі.

Торлы координат осі түрінде екі айнымалы функциясын Z=f(x, y) тұрғызу қажет болсын.

Параллельді жобалау кезінде тік сызықтың жобасы тік сызық түрінде беріледі.

Экраннның жазықтығында P(x, y, z) –тің кез келген нүктесі  [(p,e1),  (p, e2)]  нүктесіне ауысады , мұндағы

e1= (cosφ, sinφ, 0)

e2= (sinφ, sinq, - cosφ sinq, cosq), ал жобалаудың  бағыты:

e3= (sinφ cosq,  - cosφ - cosq, sinq)                           (1)

 

мұндағы φє[0, 2π], qє[-π/2, π/2] – бұрыштары у=у1 жазықтығы, у=у2,  у1<у2  жазықтықтарына қарағанда, экран жазықтығына жақын болуы үшін сәйкестендірілген.

Осыған сәйкес Z=f(x, yj) сызығы Z=f(x, yi) сызығын жаппайды.

Сызықтар сызылған кезде өшіру тәртібімен және кезекті сызық сызылғанда оның тек қана алдыңғы салынған сызықтармен жабылмайтын бөлігі ғана салынатын алгоритм құрылуы мүмкін.

Алдыңғы салынғандармен жабылмайтын сызықтардың бөліктерін анықтау үшін Z=f(x, yк)  беттердің сызықтары енгізіледі.

у=ук(х) экран жазықтығының сызығы Z=f(x, yк) жазықтығының сызығы  болсын, мұндағы (х, у) – бұл экрандағы координаттар.

Онда бет сызықтары төмендегідей анықталады:                      

                                                     (2)

 

Экранда укmax)-тен жоғары немесе укmin)-тен төмен болатын   у=ук) сызық бөліктері ғана  салынады.

Бұл әдісті Брезенхеймның кезекті пиксельді шығару алдында, оның ординаттарын жоғарғы және төменгі сызықтармен салыстыратын, түрлендірілген растрлық алгоритмінің көмегімен жүзеге асырған өте жеңіл.

Осындай әдісті көлемді объектілерді салу барысында қолдануға болады. Тек бұл жағдайда сурет экран жазықтығының  алып тастауының өлшемі  бойынша, ал экран жазықтығының жақындату өлшемі сыртқы жиектеріне қарай, ал бітер кезде өзімен бірге көрінбейтін алыс беттерін жабатын  жақын  беттер бойынша шығарылады.

Беттердің шығарылу тәртібін анықтау үшін  сызығында жатқан бет  сызығында жатқан бетті жаба алмайды. [1]

Z-буферлік әдісі.

Бұл жерде арнайы қосымша массив(буфер), Z координаты жазылатын суреттің әрбір пикселі үшін қолданылады.

Z координаты нысанның сәйкес нүктесі мен жобалаудың жазықтығына дейінгі аралықты білдіреді – бұл мысалы, Z бейнелі  координаты болуы мүмкін.

Нысандардың салынуының осы әдіске байланысты салыну алгоритмін қарастырайық. Жазықтықты жобалаудың Z мағынасы кеңістіктегі нүктеден жақынырақ болсын.Онда, бірінші  Z-буфер  ең кіші мәндер бойынша толтырылады. Содан кейін барлық көлемдердің шығарылуы басталады. Сонымен қатар, нысандардың шығарылу тәртібі маңызды емес. Әрбір нысан үшін барлык пикселдер түрлі ретпен шғарылады. Әрбір пикселді олардың (X,Y) координаттары бойынша шығару барысында Z қалыпты мәні Z буферінде сақталады. Егер салынатын пиксел  Z-буфердегі   Z –тен үлкен мәнге ие болса, онда бұл пиксел расында да салынады, ал оның Z-координаты  Z-буферге жазылады. Осылайша, барлық объектілерді, барлық пикселдерді салып біткен соң растрлық суреттің пикселдері  нысанның нүктелеріне сәйкес келетін Z координатының ең үлкен мәндерімен, яғни  көзге көрінетін нүктелері бізге өте жақын болады.[2]

  Z-буферді қолданудың төменде көрсетілген кейбір мәселелерін көрсетейік:

1.       Қосымша жадының бөліну қажеттілігі. Z-буфері үшін  Z координатының нақты белгіленуі мен суреттің растрының көлеміне сәйкес болатын жады  көлемі қажет. Жалпы Z-буфердің бір пикселіне 32, 24 немесе 16 бит қолданылады. Мысалы 1024x768x32 Z-буфер үшін 3 Мегабайт қажет.Қазіргі таңда жадының осынша шығыны көлемді болып есептелмейді.

2.         Z-буфердің кадрды шығармас бұрын толық онатылуы («ең үлкен» мәндердің жазылуы) анимацияның  жылдамдығын төмендетеді. Сонымен қоса мұндай Z-буферді бірнеше кадрға бір рет қана орнату әдісі жиі қолданылады. Бұл жағдай Z мәндерінің толық диапазонын теңдей екіге бөлгенде ғана мүмкін болады. Мысалы, егер мәндердің толық диапазоны 0-ден 1-ге дейін болса, онда бірінші кадрда Z –тің аралас мәндері 1-ден 0,5 аралықта, ал келесі кадрда  0,5-тен 0-ге дейінгі аралықта  болады.

3.       Қажетсіз операциялардың үлкен көлемі. Көрінетінділік пикселдер дәрежесінде көрінетін болғандықтан, онда циклда белгіленген жерлерде мүлде көрінбейтін  артық операциялар орындалады. Ондай жерлерде шығару циклына дейін белгілеп қойған дұрыс болады.

4.       Жартылай көрінбейтін объектілерді шығару мәселесі.

5.       Аралық ретінде 2 координатына қайта қарау бұрышына 180 градус және одан көбін қолдануға болмайды. Цилиндрлік және шарлық беттерге нысанның белгіленген нүктесінен проекциялық сәулелердің жойылатын нүктесіне дейінгі түбегейлі арақашықтықты пайдалану жақсы болады.[3]

Бұл тапсырма жеңіл әрі оңай болып көрінгенімен, қиын  болып келеді.

 

 

 

ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ

 

1.          Никулин Е. А. Компьютерная геометрия и алгоритмы машинной графики. СПб.: БХВ-Петербург, 2003. – 560с.: ил.

2.          Авдеева С.М., Куров А.В. Алгоритмы трехмерной машинной графики: Учебное пособие. – М.: Изд-во МГТУ им. Н.Э. Баумана, 1996. – 60 с.: ил.

3.          Иванов        В.П., Батраков А.С. Синтез изображений объектов сложной формы методом трассирования лучей // Программирование.-1989.2.-С. 70-75.