Кіріспе

Компьютерлік графикада және оған байланысты салаларда қолданылатын қисық.

Безиер қисығы (/'//b//E//z//.//i//.//ei/ BEHzeeay) – компьютерлік графикада және оған байланысты салаларда қолданылатын параметрлік қисық. Дискретті "бақылау нүктелерінің" жиынтығы формула арқылы тегіс, үздіксіз қисықты анықтайды. Әдетте, қисық нақты әлемнің пішінін шамамен бейнелеуге арналған, әйтпесе оның математикалық өрнегі болмаса немесе белгісіз немесе тым күрделі болады. Безиер қисығы француз инженері Пьер Безиердің (1910–1999) құрметіне аталған, ол 1960 жылдары Renault автомобильдерінің кузовтары үшін қисықтарды жобалауда оны қолданған. Басқа қолданыстарға компьютерлік қаріптерді және анимацияны жасау жатады. Adobe Flash, Adobe After Effects, Microsoft Expression Blend, Blender, Autodesk Maya және Autodesk 3ds Max сияқты анимациялық бағдарламаларда, сондай-ақ пайдаланушы интерфейсін жобалауда және көзбен басқарылатын интерфейстерде курсор траекториясын тегістеуде қолданылады. Мысалы, Безиер қисығын A нүктесінен B нүктесіне жылжыған белгіше сияқты объектінің уақыт бойынша жылдамдығын көрсету үшін пайдалануға болады, қарапайым түрде әр қадамда белгілі бір пиксел санымен жылжудың орнына. Аниматорлар немесе интерфейс дизайнерлері операцияның "физикасы" немесе "сезімі" туралы айтқанда, олар осы қозғалыстың уақыт бойынша жылдамдығын басқару үшін қолданылатын нақты Безиер қисығын білдіруі мүмкін. Бұл робототехникаға да қатысты, мысалы, дәнекерлеу манипуляторының қозғалысы қажетсіз тозуды болдырмау үшін тегіс болуы керек.

Өнертабыс

Безиер қисықтарының математикалық негізі – Бернштейн полиномдары 1912 жылы қаланды, бірақ полиномдар графика саласында шамамен 50 жылдан кейін ғана қолданыла бастады. 1959 жылы математик Пол де Кастельжау қисықтарды бағалаудың сандық тұрақты әдісі болып табылатын де Кастельжау алгоритмін жасады және француз автокөлік өндірушісі Citroën компаниясында компьютерлік көмекпен жобалауға оларды алғаш рет қолданды. Де Кастельжау әдісі Францияда патенттелген, бірақ 1980-ші жылдарға дейін жарияланбады, ал Безиер полиномдары 1960-шы жылдары француз инженері Пьер Безиердің кеңінен танымал болды. Ол оларды тәуелсіз түрде ашты және Renault компаниясында автомобильдердің корпустарын жобалау үшін пайдаланды.

Ерекше жағдайлар

Безиер қисығы P0-ден Pn-ге дейінгі бақылау нүктелерінің жиынтығы арқылы анықталады, мұнда n – қисықтың дәрежесі деп аталады (n = 1 – сызықтық үшін, 2 – квадраттық үшін, 3 – текшелік үшін және т.б.). Бірінші және соңғы бақылау нүктелері әрқашан қисықтың бастапқы және соңғы нүктелері болып табылады; алайда, аралық бақылау нүктелері көбінесе қисықтың үстінде жатпайды. Келесі бөлімдердегі қосындылар аффиндік комбинациялар ретінде қарастырылуы керек, яғни коэффициенттердің қосындысы 1-ге тең.

Сызықтық Безиер қисықтары

P0 және P1 ерекше нүктелер берілгенде, сызықтық Безиер қисығы – бұл аталған екі нүкте арасындағы түзу сызық. Қисық мына формуламен беріледі:

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

Жалпы анықтама

Безиер қисықтары кез келген n дәрежесі үшін анықталуы мүмкін.

Рекурсивті анықтама

N дәрежелі Безиер қисығының рекурсивті анықтамасы оны екі n-1 дәрежелі Безиер қисықтарындағы сәйкес нүктелердің жұбының нүктеден нүктеге сызықтық комбинациясы (сызықтық интерполяция) ретінде көрсетеді. P0, P1, ..., Pk нүктелерінің кез келген таңдауымен анықталатын Безиер қисығын белгілейік. Бастапқыда,

Осы рекурсия төмендегі анимацияларда түсіндірілген.

Қасиеттері

Иілгіш нүктесімен басталады және нүктесімен аяқталады; бұл соңғы нүкте интерполяциясы қасиеті деп аталады. Иілгіш, егер және тек қана барлық бақылау нүктелері бір түзуде жатса, сызық болып табылады. Иілгіштің басталышы мен соңы, сәйкесінше, Безиер көпбұрышының бірінші және соңғы бөлігіне жанасады. Кез келген нүктеде иілгішті екі немесе кез келген санында суб-иілгіштерге бөлуге болады, олардың әрқайсысы да Безиер иілгіші болып табылады. Шеңбер сияқты кейбір қарапайым көрінетін иілгіштерді Безиер немесе бөліктерінен құралған Безиер иілгішімен дәл сипаттау мүмкін емес; бірақ төрт бөліктен тұратын кубикалық Безиер иілгіші шеңберге жуықтап келуге болады (құрама Безиер иілгішіне қараңыз), ең жоғары радиалдық қате мыңнан бір бөліктен кем, егер әрбір ішкі бақылау нүктесі (немесе офлайн нүктесі) бірлік шеңбердегі сыртқы бақылау нүктесінен көлденең немесе тік бағытта қашықтықта орналасқан болса. Жалпы алғанда, n бөліктен тұратын кубикалық Безиер иілгіші шеңберге жуықтап келе алады, егер әрбір ішкі бақылау нүктесі бірлік шеңбердегі сыртқы бақылау нүктесінен қашықтықта болса, мұнда (яғни) және әрбір квадраттық Безиер иілгіші кубикалық Безиер иілгіші болып табылады, ал жалпы алғанда, кез келген n дәрежелі Безиер иілгіші кез келген m > n үшін m дәрежелі иілгіш болып табылады. Нақтырақ айтқанда, бақылау нүктелері бар n дәрежелі иілгіш, n + 1 дәрежелі иілгішке тең (параметрлеуді қоса алғанда), мұнда , және , сондай-ақ , анықталады. Безиер иілгіштері өзгерісті азайту қасиетіне ие. Интуитивті тұрғыдан алғанда, Безиер иілгіші өзінің бақылау нүктелерінің көпбұрышынан артық "толқындырмайды", тіпті одан да аз "толқындыруы" мүмкін. n дәрежелі Безиер иілгіштерінде жергілікті басқару жоқ – яғни, бақылау нүктесіне кез келген өзгеріс қайта есептеуді талап етеді және осылайша бүкіл иілгіштің түріне әсер етеді, "бірақ өзгертілген бақылау нүктесінен қашықтық артқан сайын, иілгіштегі өзгеріс те азаяды". Екіден жоғары ретті Безиер иілгіші өзімен-өзі қиылысуы немесе бақылау нүктелерінің белгілі бір таңдаулары үшін тұғыры болуы мүмкін.

Екінші реттік қисық параболалық сегмент болып табылады

Квадраттық Безиер қисығы да параболаның сегменті болып табылады. Парабола конустық қима болғандықтан, кейбір дереккөздер квадратты Безиерлерді "конустық доғалар" деп атайды. Қисықтың (A және B) соңғы нүктелеріндегі параболаға жүргізілген жанамалар оның басқару нүктесінде (C) қиылысады. Егер D, AB-ның ортасы болса, CD-ге перпендикуляр болатын қисыққа жүргізілген жанама (көк түсті пунктирлі сызық) оның төбесін (V) анықтайды. Оның симметрия осі (көк түсті сызық-нүктелі) V арқылы өтеді және жанамаға перпендикуляр болады. E – CD-ге 45° бұрышпен жанамасы бар қисықтағы нүкте (жасыл түсті пунктирлі сызық). Егер G осы жанама мен осьтің қиылысуы болса, G арқылы өтетін және CD-ге перпендикуляр сызық – директриса (қатты жасыл). Фокус (F) ось пен E арқылы өтетін және CD-ге перпендикуляр сызықтың қиылысында (сары түсті нүктелі сызық). Латус ректум – қисықтың ішіндегі сызық сегменті (қатты сары).

Безие қисықтарының орнын толтыру (немесе сызу)

Безиер қисығынан белгілі бір қашықтықтағы қисық, математикада ауытқу немесе параллель қисық деп аталады (темір жол рельстері арасындағы қашықтық сияқты, бастапқы қисыққа "паралель" орналасқан), Безиер қисығымен нақты түрде құрастырыла алмайды (кейбір қарапайым жағдайларды есептемегенде). Жалпы, кубикалық Безиер қисығының екі жақты ауытқу қисығы 10-шы дәрежелі алгебралық қисық болып табылады, ал жалпы алғанда, n дәрежелі Безиер үшін екі жақты ауытқу қисығы 4n-2 дәрежелі алгебралық қисық болып табылады. Дегенмен, практикалық мақсаттар үшін көбінесе жеткілікті жақындық беретін эвристикалық әдістер бар. Векторлық графика саласында, екі симметриялық қашықтықтағы ауытқу қисықтарын салу сызату деп аталады (Безиер қисығы немесе жалпы алғанда бірнеше Безиер сегменттерінен тұратын жол).

Қайталанған жоғарылау

Степенің көтерілу концепциясын бақылау көпбұрышы R-ге қайталап қолдану арқылы R, R1, R2 және т.б. бақылау көпбұрыштарының тізбегін алуға болады. r рет степені көтерілгеннен кейін, Rr көпбұрышы P0,r, P1,r, P2,r, ..., Pn+r,r нүктелерімен анықталады. Қатар жуықтау алгоритмдері ұсынылып, тәжірибеде қолданылған.

Компьютерлік графика

Безие қисықтары компьютерлік графикте тегіс қисықтарды модельдеу үшін кеңінен қолданылады. Қисық өзінің басқару нүктелерінің дөңгелек қабығының ішінде толығымен орналасқандықтан, нүктелерді графикалық түрде көрсетуге және қисықты интуитивті түрде басқаруға болады. Аударма және бұру сияқты аффиндік түрлендірулерді қисықтың басқару нүктелеріне тиісті түрлендіруді қолдану арқылы қисыққа қолдануға болады. Квадраттық және кубикалық Безие қисықтары ең көп таралған. Жоғары дәрежелі қисықтарды бағалау есептеу жағынан қымбат. Күрделі пішіндер қажет болғанда, төмен дәрежелі Безие қисықтары біріктіріліп, композиттік Безие қисығын жасайды. Композиттік Безие қисығы векторлық графика тілдерінде (мысалы, PostScript), векторлық графика стандарттарында (мысалы, SVG) және векторлық графика бағдарламаларында (мысалы, Artline, Timeworks Publisher, Adobe Illustrator, CorelDraw, Inkscape және Allegro) «жол» деп аталады. Безие қисықтарын бұрыштарсыз композиттік Безие қисығына қосу үшін G1 үздіксіздігі деп аталатын қасиет жеткілікті, ол екі құраушы Безие қисығы кездесетін басқару нүктесін екі жағындағы екі басқару нүктесімен анықталатын түзуде жатуын қамтамасыз етеді. Безие қисығын растерлеудің (сканерлеудің) ең қарапайым әдісі – оны көптеген тығыз орналасқан нүктелерде бағалау және сызық сегменттерінің шамамен келетін тізбегін сканерлеу. Дегенмен, бұл растрленген нәтиженің жеткілікті тегіс болатынына кепілдік бермейді, өйткені нүктелер бір-бірінен тым алыс болуы мүмкін. Керісінше, қисық сызықтыққа жақын аймақтарда тым көп нүктелер тудыруы мүмкін. Көп қолданылатын адаптивті әдіс – рекурсивті бөлу, онда қисықтың басқару нүктелері қисық сызықтың белгілі бір толеранттылық шегінде тураға жуықтағанын тексеру үшін тексеріледі. Егер жуықтама болмаса, қисық екі сегментке бөлінеді: 0 ≤ t ≤ 0.5 және 0.5 ≤ t ≤ 1, содан кейін әр жартысына бірдей процедура рекурсивті түрде қолданылады. Алға қарай айырмалау әдістері де бар, бірақ қателіктердің таралуын талдау үшін үлкен сақтық қажет. Metafont-та қолданылатын растерлеу алгоритмі қисықты дискреттеуге негізделген, сондықтан ол пиксел шекаралары бойынша таза тік немесе таза көлденең «тозақ қозғалыстары» тізбегімен жуықталады. Осы мақсатта жазықтық алдымен сегіз 45° секторға (координаттық осьтер және екі түзу арқылы) бөлінеді, содан кейін қисық кішігірім сегменттерге бөлінеді, қисық сегментінің бағыты бір секторда қалады; қисық жылдамдығы екінші дәрежелі полиномиал болғандықтан, осы сызықтардың біріне параллель болатын мәндерді табу үшін квадраттық теңдеулерді шешу қажет. Әр сегментте көлденең немесе тік қозғалыс басым, ал екі бағыттағы қадамдардың жалпы санын соңғы нүкте координаттарынан оқуға болады; мысалы, 0–45° секторда оңға қарай көлденең қозғалыс басым, сондықтан қисық қай қадамдарда оңға қарай жоғары қадам жасау керектігін анықтау ғана қалады. Zingl-дің Бресенхамның сызық сызу алгоритмінің өзгертілген қисық түрі қисықты рационалды бөліктерге бөліп, әр пиксел орнында қателікті есептеу арқылы осы растерлеуді жүзеге асырады, ол қателік жиналуына байланысты 45° бұрышта немесе түзу бойымен қозғалады. Бұл келесі қадамды есептеуді бүтін сандарды қосу және алу тізбегіне дейін азайтады.

Анимация

Adobe Flash және Synfig сияқты анимациялық қолданбаларда Безиер қисықтары, мысалы, қозғалысты белгілеу үшін қолданылады. Пайдаланушылар қалаған жолды Безиер қисықтарымен сызады, ал қолданба нысанның сол жолмен қозғалуы үшін қажетті кадрларды жасайды. 3D анимацияда Безиер қисықтары көбінесе 3D жолдарды, сондай-ақ кілттік кадрларды интерполяциялау үшін 2D қисықтарды анықтауға қолданылады. Безиер қисықтары қазір CSS, JavaScript, JavaFx және Flutter SDK-да анимацияның жылдамдығын басқару үшін жиі қолданылады. FreeType сияқты шрифттер қозғалтқыштары шрифттердің қисықтарын (және сызықтарын) пикселденген бетке «шрифт растерлеуі» деп аталатын процестің көмегімен салады. Әдетте, шрифттер және векторлық графика қозғалтқыштары Безиер қисықтарын рекурсивті түрде бөліп, қисық сызықты немесе дөңгелек сегменттер тізбегі ретінде салуға жеткілікті тегіс болғанша жасайды. Нақты бөлу алгоритмі жүзеге асыруға байланысты, бірақ қажетті дәлдікке жету және қисықтың монотонды емес жергілікті өзгерістерін болдырмау үшін тегістік критерийлеріне сәйкес болу қажет. Microsoft Excel-дегі диаграммалардың «тегіс қисық» мүмкіндігі де осы алгоритмді қолданады. Дөңгелектер мен эллипс доғаларын Безиер қисықтарымен нақты бейнелеу мүмкін емес болғандықтан, олар алдымен Безиер қисықтарымен жуықталады, ал содан кейін дөңгелек доғаларымен жуықталады. Бұл тиімсіз, себебі барлық Безиер қисықтарын дөңгелек немесе эллипс доғаларын қолдана отырып жуықтауға болады, оларды кез келген дәлдікпен біртіндеп көрсетуге болады. Басқа тәсіл, заманауи аппараттық графикалық адаптерлерде жеделдетілген геометриямен қолданылады, ол барлық Безиер және коникалық қисықтарды (немесе беттерді) NURBS-ке айналдыра алады, оларды қажетті тегістік деңгейіне жету үшін қисықты рекурсивті бөлусіз біртіндеп көрсетуге болады. Бұл тәсіл сонымен қатар барлық сызықтық немесе перспективалық 2D және 3D түрлендірулер мен проекциялар кезінде қисық анықтамасын сақтайды.