Кіріспе

3D графикада көрінетін бетті анықтау алгоритмі

Суретшінің алгоритмі (сонымен қатар тереңдік бойынша сұрыптау алгоритмі және басымдықпен толтыру) – 3D компьютерлік графикада көрінетін бетті анықтау алгоритмі. Бұл алгоритм басқа жасырын беттерді жою алгоритмдерінен айырмалы, пиксель бойынша, қатар бойынша немесе аудан бойынша емес, көпбұрыш бойынша жұмыс істейді. Суретшінің алгоритмі суретті жасау үшін, суреттегі көпбұрыштарды тереңдігі бойынша сұрыптап, ең алыс объектіден ең жақын объектіге дейін реттейді. Суретшінің алгоритмі алғаш рет 1972 жылы Мартин Ньюэлл, Ричард Ньюэлл және Том Санча CADCentre-де жұмыс істеген кезде жасырын бетті анықтау мәселесін шешудің қарапайым әдісі ретінде ұсынылды. "Суретшінің алгоритмі" деген атау көптеген суретшілер қолданатын техникаға сілтеме жасайды, олар көріністің алыс бөліктерін жақын бөліктерге дейін суреттейді, соның салдарынан алыс бөліктердің кейбір бөліктерін жабады. Сол сияқты, суретшінің алгоритмі сахнадағы барлық көпбұрыштарды тереңдігі бойынша сұрыптап, содан кейін оларды осы ретпен, ең алыс нүктеден ең жақын нүктеге дейін "бояйды". Бұл әдетте көрінбейтін бөліктерді жабады, осылайша көріну мәселесін шешеді, бірақ алыстағы объектілердің көрінбейтін бөліктерін бояудың құнына. Алгоритм қолданатын рет "тереңдік тәртібі" деп аталады және көріністің бөліктеріне сандық қашықтықты қатаң сақтаудың қажеті жоқ: осы тәртіптің ең маңызды қасиеті – егер бір нысан екінші нысанның бөлігін жасыратын болса, онда бірінші нысан жасырылған нысаннан кейін боялады.

Уақыт күрделілігі

Суретшінің алгоритмінің уақыт күрделілігі көпбұрыштарды реттеуге қолданылатын сұрыптау алгоритміне тікелей байланысты. Ең оңтайлы сұрыптау алгоритмі қолданған жағдайда, суретшінің алгоритмінің ең нашар жағдайдағы күрделілігі O(n log n + m*n) болады, мұнда n – көпбұрыштардың саны, ал m – толтырылатын пиксельдердің саны.

Ғарыштық күрделілік

Суретшінің алгоритмінің ең нашар жағдайдағы жадтың күрделілігі O(n+m) тең, мұнда n – көпбұрыштар саны, ал m – толтырылатын пиксельдер саны.

Артықшылықтар

Суретшінің алгоритмін қолдануға ыңғайлы екі маңызды техникалық шарттар бар.

Негізгі графикалық құрылым

Суретшінің алгоритмі басқа тереңдік бойынша сұрыптау алгоритмдерімен салыстырғанда құрылысы жағынан күрделі емес. Суретшінің алгоритмінде қолданылатын тереңдікке негізделген рендеринг тәртібі сияқты компоненттер – графикалық өндіріс ретін анықтаудың ең оңай жолдарының бірі. Бұл бағдарламалардың үлкен тапсырмаларды орындау үшін жадты мүмкіндігінше тиімді басқаруын қажет етті, сондайынша құлап түспесін. Суретшінің алгоритмі жадты тиімді пайдалануға басымдық береді, бірақ барлық суреттердің барлық бөліктерін көрсету қажет болғандықтан, бұл жоғары өңдеу қуатының қажеттілігіне әкеледі. Мұндай жүйелерде де суретшінің алгоритмінің түрі кейде қолданылады. Z-буферді іске асыру көбінесе аппараттық құралдардағы белгілі бір дәлдіктегі тереңдік буферлік тіркегіштерге сүйенгендіктен, дөңгелектеу қатесінен туындаған көріну проблемалары болуы мүмкін. Бұл көпбұрыштардың бірігіп тұрған жерлерінде қабаттасулар немесе кеңістіктер тудыруы мүмкін. Мұны болдырмау үшін кейбір графикалық қозғалтқыштар "артық рендерингті" (over rendering) іске асырады, суретшінің алгоритмімен көрсетілген тәртіпте екі көпбұрыштың зардап шеккен жиектерін салады. Бұл кейбір пиксельдердің екі рет салынуын білдіреді (толық суретшінің алгоритміндегідей), бірақ бұл тек суреттің шағын бөліктерінде ғана болады және өнімділікке елеусіз әсер етеді.