Кіріспе

Компьютерлік графикадағы сфералық сызықтық интерполяция

Компьютерлік графикада slerp – Кен Шомейке 3D айналымды анимациялау мақсатында кватерниондық интерполяция контекстінде енгізген сфералық сызықтық интерполяцияның аббревиатурасы. Бұл 0 мен 1 аралығындағы интерполяция параметрі және доғаның соңғы нүктелері берілгенде, бірлік радиусы бар үлкен шеңбер доғасы бойымен тұрақты жылдамдықпен қозғалуды білдіреді.

Геометриялық слерп

Слерптің кватерниондардан тәуелсіз геометриялық формуласы бар және доға салынған кеңістіктің өлшемінен тәуелсіз. Гленн Дэвис есімді ғалымға жатқызылатын симметриялық салмақталған соманың бұл формуласы, қисықтағы кез келген нүкте доғаның ұштарының сызықтық комбинациясы болуы керек деген фактіге негізделген. p0 және p1 доғаның бірінші және соңғы нүктелері болсын, ал t – 0 ≤ t ≤ 1 шегіндегі параметр. Ω-ны доғаның астындағы бұрыш ретінде есептейміз, ол бастапқы нүктеден доғаның ұштарына дейінгі бірлік векторлардың n өлшемді скалярлық көбейтіндісіне тең. Геометриялық формула мынадай болады:

Симметрия slerp(p0, p1; t) функциясында көрінеді. Ω → 0 болғанда, бұл формула сызықтық интерполяцияның сәйкес симметриялық формуласына дейін тобыққанда, slerp жолы жазықтықтағы түзу сызық сегментімен салыстырылатын сфералық геометрияның эквиваленті болып табылады; үлкен шеңбер сфералық геодезиялық болып табылады. Жалпы slerp формуласынан гөрі, доғаның ұштары перпендикуляр болатын жағдай көбірек таныс, онда формула p0cos θ + p1sin θ түрінде болады. Тригонометриялық өрнекті қолданып, бұл slerp формуласына келтіріледі. Жалпы формуланың 1/sin Ω коэффициенті нормалау үшін қолданылады, себебі p0-ға қатысты Ω бұрышпен орналасқан p1 векторы, p0-ға перпендикулярға sin Ω ұзындығымен ғана проекцияланады. Slerp-тің кейбір ерекше жағдайлары тиімді есептеуге мүмкіндік береді. Растрлік кескінге дөңгелек доғаны салу қажет болғанда, Брезенхам шеңбер алгоритмінің бір түрі қолданылады. 0 және 1 мәндеріндегі ерекше параметрлерді есептегенде p0 және p1 мәндері шығады; ал екіге бөлу, яғни t = 1/2 мәніндегі есептеу (p0 + p1) / 2 түрінде қарапайымдастырылады және нормаланады. Анимацияда жиі кездесетін тағы бір ерекше жағдай – бұл тұрақты ұштары және тең параметрлік қадамдары бар есептеу. Егер pk-1 және pk екі тізбекті мән болса, ал c олардың скалярлық көбейтіндісінің екі есесіне тең болса (барлық қадамдар үшін тұрақты), онда келесі мән pk+1 – бұл кері проекция.

Кватерниондық слерп

Slerp бірлік кватерниондарға қолданылғанда, кватернион жолы стандартты түрде 3D айналымдар арқылы жолға бейнеленеді. Нәтижесі – тұрақты айналу осінің айналасында біркелкі бұрыштық жылдамдықпен айналу. Егер бастапқы соңғы нүкте бірлік кватернион болса, slerp 3D айналымдардың Ли тобының бір параметрлі кіші тобының сегментін береді, SO(3), және оның бірлік кватерниондардың әмбебап жапқыш тобын, S3. Slerp өзінің кватерниондық нүктелері арасындағы ең тура және қысқа жолды береді және 2Ω бұрышы арқылы айналуға бейнеленеді. Дегенмен, жапқыш екі еселі болғандықтан (q және −q бірдей айналуға бейнеленеді), айналу жолы "қысқа жолмен" (180° төмен) немесе "ұзақ жолмен" (180° жоғары) жүруі мүмкін. Ұзақ жолдарды болдырмау үшін, егер нүктелік көбейтінді, cos Ω, теріс болса, бір соңғы нүктенің таңбасын өзгертуге болады, осылайша -90° ≤ Ω ≤ 90° екенін қамтамасыз етеді. Slerp кватернион алгебрасы тұрғысынан да өрнектеледі, барлығы экспоненталауды қолданады. Кватернионның нақты дәрежелері кватерниондық экспоненциалдық функция арқылы анықталады, ол eq деп жазылады және математикалық есептеуден, комплекс сандар талдауынан және матрицалық алгебрадан бірдей таныс күштер қатарымен беріледі: Бірлік кватернион q-ны версор түрінде жазу, cos Ω + v sin Ω, мұнда v – бірлік 3 вектор, және кватернионның квадраты v2 = −1 екенін ескеру (кватерниондық Эйлер формуласын білдіреді), мыналарға ие болады: және қызығушылық тудыратын сәйкестік , сондықтан q-ның нақты бөлігі cos Ω, жоғарыда қолданылған геометриялық нүктелік көбейтіндімен бірдей. Міне, slerp үшін төрт эквивалентті кватерниондық өрнек. Slerp(q0, q1; t) функциясының t-ға қатысты туындысы, егер соңғы нүктелер бекітілген болса, функция мәніне log(q1q0−1) көбейтілген шамаға тең, мұнда бұл жағдайда кватерниондық табиғи логарифм 3D бұрыштық жылдамдық векторының жартысын береді. Бастапқы жанама вектор қисық бойындағы әрбір жанамаға параллель түрде көшіріледі; демек, қисық шын мәнінде геодезиялық болып табылады. Кватерниондық slerp қисығының кез келген нүктесіндегі жанама кеңістікте экспоненциалдық картаның керісі қисықты түзу сегментіне айналдырады. Егер slerp қисығы бір нүкте арқылы өспесе, ол сол нүктеге жанасатын кеңістіктегі түзуге айнала алмайды. Кватерниондық slerp-тер көбінесе тегіс анимациялық қисықтарды құру үшін қолданылады, Безиер қисықтары үшін де Кастельжау алгоритмі сияқты аффиндік құрылымдарды еліктейді. Сфера аффиндік кеңістік болмағандықтан, аффиндік құрылымдардың таныс қасиеттері орындалмауы мүмкін, бірақ құрастырылған қисықтар мүлдем қанағаттанарлық болуы мүмкін. Мысалы, де Кастельжау алгоритмі аффиндік кеңістіктегі қисықты бөлу үшін қолданылуы мүмкін; бұл сферада жұмыс істемейді. Екі мәнді slerp көптеген бірлік кватерниондар арасында интерполяция үшін кеңейтілуі мүмкін, бірақ кеңейту slerp алгоритмінің белгіленген орындалу уақытын жоғалтады.