Кіріспе

Маршыр тетраэдрлер — компьютерлік графика саласындағы имплициттік беттерді көрсету алгоритмі. Ол кейбір куб конфигурацияларындағы маршыр текшелер алгоритмінің шағын беймаздығын жояды. Алғаш рет 1991 жылы ұсынылған. Алғашқы маршыр текшелер алгоритмі бағдарламалық патентпен қорғалғандықтан, маршыр тетраэдрлер патенттік лицензия қажет етпейтін балама алгоритм ұсынды. Патент тіркелген күннен (1985 жылдың 5 маусымы) бері 20 жылдан астам өтті, сондықтан маршыр текшелер алгоритмін қазір еркін пайдалануға болады. Кейбір конфигурациялардағы аталған беймаздықты түзету үшін маршыр тетраэдрлердің шағын жақсартуларын қолдануға болады. Маршыр тетраэдрлерде әрбір куб үш рет екіге бөлініп, қарама-қарсы жақтарының әрбір үш жұбы арқылы диагональ бойынша кесіледі, нәтижесінде алты ретсіз тетраэдр пайда болады. Осылайша, тетраэдрлердің барлығы кубтың бір негізгі диагоналін бөліседі. Кубтың он екі қырының орнына енді он тоғыз қырымыз бар: бастапқы он екі, алты жақ диагоналі және бір негізгі диагональ. Маршыр текшелердегідей, осы қырлардың изожағымен қиылысуы тор нүктелеріндегі мәндерді сызықтық интерполяциялау арқылы жуықталады. Жақын орналасқан кубтар жалғасқан жақтағы барлық қырларды, соның ішінде бірдей диагональды бөліседі. Бұл көрсетілген бетте жарықтардың пайда болуын болдырмау үшін маңызды қасиет, себебі жақтың екі бөлек диагоналінің интерполяциясы көбінесе сәл өзгеше қиылысу нүктелерін береді. Қосымша артықшылығы – көрші кубты өңдегенде есептелген қиылысу нүктелерінің беске дейін қайта қолданылуы мүмкін. Бұған қиылысу нүктелеріндегі есептелген беттік нормальдар және басқа графикалық атрибуттар кіреді. Әр тетраэдрдің он алты мүмкін конфигурациясы бар, олар үш классқа бөлінеді: қиылысу жоқ, бір үшбұрышта қиылысу және екі (іргелес) үшбұрышта қиылысу. Барлық он алты конфигурацияны тізімдеп, оларды тиісті үшбұрышты жолақты анықтайтын төбе индекстерінің тізімдерімен сәйкестендіру оңай.

Жүргізуші текшелермен салыстыру

Жүргізуші тетраэдр бір кубқа он тоғыз қабырға қиылысын есептейді, ал жүргізуші кубқа тек он екі ғана қажет. Бұл қиылыстардың тек біреуі ғана жақын текшемен (негізгі диагональдағысымен) ортақ болмайды, бірақ кубтың барлық жақтарында ортақтасу алгоритмді күрделендіреді және жадқа қажетті көлемді едәуір арттырады. Алайда, қосымша қиылыстар сәл жақсырақ үлгілеу ажыратымдылығын қамтамасыз етеді. Көп қолданылатын анықтама кестелерінің мөлшерін анықтайтын конфигурациялар саны әлдеқайда аз, себебі тетраэдр үшін сегіз емес, тек төрт жеке төбелік қатысады. Бір кубтың орнына алты тетраэдрді өңдеу қажет. Процесс нақты, сондықтан қосымша беймаздықтарды жою қажет емес. Керісінше, тетраэдрлермен кубты бөлу тетраэдрлердің бағдарына қатысты таңдау жасауды талап етеді, бұл жақ диагональдары бойынша интерполяция нәтижесінде изожақ бетінде жасанды "дөңгелектерге" әкелуі мүмкін.

Алмаздық торлы жасуша - альтернативті текше кесу әдісі

Кубикалық жасушаларды торға түсіру үшін, негіз ретінде (алмаз кубикалық) торды пайдаланып, 5 тетраэдрге бөлуге болады. Кубтардың әр жағына, тетраэдрдің куб центріне қатысты кері бағытта орналасқан басқа кубтар жалғастырылады. Кезектесіп орналасқан төбелерде тетраэдрлердің қиылысу саны әртүрлі болады, нәтижесінде олардың орналасуына байланысты тордың құрылымы сәл өзгеше болады. Осылай кескенде қосымша симметрия жазықтықтары пайда болады; куб центрінде тетраэдрдің болуы, сондай-ақ, беттің сыртындағы нүктелердің айналасында кеңістіктердің ашылуына себеп болады. Алмаз кубиктің әртүрлі визуализациялары бар. Бос жасушалардың орнына, әр жасуша кезектесіп ішкі тетраэдрлермен толтырылуы керек. Кубқа ішкі жазылған әр тетраэдр үшін, кубтың төбелерін және оның беттерін қиып өтетін қабырғаларын пайдаланып, тетраэдр 4 нүктеге ие болады; қалған 4 нүкте кері тетраэдрдің төбелерін құрайды; куб жасушалары (x+y+z+) орны тақ болса, бірін пайдалану арқылы, әйтпесе керісінше орналастырылады; әйтпесе, жақын жасушалар қиылысуды есептеу үшін басқа диагональды қолданады. Кеңістіктік текстура жүйесіне негізделген түстің есептелуі, ағымдағы фрагмент позициясын пайдаланып, (x, y), (y, z) және (x, z) Texel (графика) координаттарының жұптарына негізделген қайталанатын текстурадан таңдау арқылы және осы мәндерді тиісінше нормальдің z, x және y компоненттерінің абсолюттік мәнімен көбейту арқылы жүзеге асырылады. Текстуралық декаль қолдану, текстуралық шашырату ретінде, декаль нормалы бағытындағы ағымдағы фрагмент позициясын бастапқы нүкте мен нормамен берілген текстура жазықтығына проекциялау арқылы, содан кейін текстура координатасын есептеу үшін "жоғары" немесе "оңға" бағыттау векторын қолдану арқылы жүзеге асырылуы мүмкін. Бұл техника Isosurface астында тізілген қос контурлаумен (dual contouring) салыстырылады, потенциалды әдіс ретінде. DCL тетраэдрлері, қос контурлау жасамайтын куб беттеріндегі диагональдар үшін қосымша есептеулерді қамтиды. Бұл әдіс сондай-ақ, екі жақын нүкте беттің "ішінде" болғанда және олардың арақашықтығы 1-ден кем болғанда, 1 нүктенің орнына жиектің бойында 2 нүкте тудыруы керек; осыған байланысты түзету – екі жақты контурлау (Manifold Dual Contouring).