Кіріспе
Квартерниондар мен 3D айналымдар арасындағы сәйкестік. Бірлік квартерниондар, версорлар деп аталатындар, үш өлшемді кеңістіктегі элементтердің кеңістіктік бағдары мен айналымдарын көрсету үшін ыңғайлы математикалық жазбаны қамтамасыз етеді. Атап айтқанда, олар кез келген ось бойынша ось-бұрыш айналымы туралы ақпаратты кодтайды. Айналым және бағдар квартерниондары компьютерлік графикада, компьютерлік көруде, робототехникада, навигацияда, молекулалық динамикада, ұшу динамикасында, спутниктердің орбиталық механикасында және кристаллографиялық текстуралық талдауда қолданылады. Айналымды көрсету үшін қолданылғанда, бірлік квартерниондар, сондай-ақ 3D айналу тобын көрсететіндіктен, айналым квартерниондары деп аталады. Бағдарды (бағыттамалық координаттар жүйесіне қатысты айналымды) көрсету үшін қолданылғанда, олар бағдар квартерниондары немесе ұстаным квартерниондары деп аталады. Эйлер осін көрсететін бірлік осьтің радианмен тұрақты нүктесінің айналысын квартернион береді, мұндағы және . Айналым матрицаларымен салыстырғанда квартерниондар ықшамдау, тиімді және сандық тұрақтырақ. Эйлер бұрыштарымен салыстырғанда оларды құрастыру оңайырақ. Дегенмен, олар интуитивті емес және түсіну қиын, сондай-ақ синус пен косинус функцияларының периодтық табиғатына байланысты, табиғи периодтан дәл ерекшеленетін айналу бұрыштары бірдей квартерниондарға кодталады, ал радианда қалпына келтірілген бұрыштар шектеледі.
Compared to rotation matrices, quaternions are more compact, efficient, and numerically stable. Compared to Euler angles, they are simpler to compose. However, they are not as intuitive and easy to understand and, due to the periodic nature of sine and cosine, rotation angles differing precisely by the natural period will be encoded into identical quaternions and recovered angles in radians will be limited to .
Бұрыштың оське құрамы
Нормалдастырылған айналу осі, кеңейтілген көбейтіндіден алынғаннан кейін, айналу осі болып табылатын векторды қалдырады, оны кейбір тұрақтыға көбейтуге болады. -ның мәні 0 немесе 1 болғанда, векторға жақын мәндерде ось векторын нормалауға қатысты сақтық таныту керек; бұл сәйкестік матрицасы немесе кез келген ось бойынша 0 градусқа айналуды білдіреді. Немесе бұрыштарды қосу арқылы тригонометриялық түрлендірулер жасап, айналу осін нормалдауға болады: немесе .
finally normalizing the rotation axis: or .
Оралу квартернионына қатысты дифференциация
Айналмалы кватернион 1='p' = q p q'^(−1) сандық оңтайландыру арқылы айналуды бағалау кезінде, айналу кватернионы 'q' қатысты дифференциалдануы керек. Айналу бұрышын бағалау – 3D нысандарды тіркеу немесе камераны калибрлеудегі маңызды процедура. 'q' бірлікке тең және 'p' таза жолғаса болса, яғни 3D кеңістікте айналу болса, айналған кватернионның туындыларын матрицалық есептеулер арқылы көрсетуге болады. Осы туындыны мына жерде табуға болады.
A derivation can be found in.
Кватерниондық айналу операциялары
Алтман осы бөлімде қолданылатын қасиеттерді өте толық және ресми түрде сипаттайды.
Айналу кеңістігін визуализациялау
Кватернион бірлігі үш өлшемдегі Евклидтік айналымдар тобын өте қарапайым түрде көрсетеді. Айналу мен кватернион арасындағы сәйкестікті алдымен айналу кеңістігін визуализациялау арқылы түсінуге болады. Айналу кеңістігін елестету үшін қарапайым жағдайды қарастыруға көмектеседі. Үш өлшемдегі кез келген айналуды қандай да бір оське қатысты қандай да бір бұрышпен айналу арқылы сипаттауға болады; біздің мақсаттарымыз үшін біз бұрышымыз үшін қолдылықты орнату үшін ось векторын қолданамыз. Айналма осі xy жазықтықта жатқан ерекше жағдайды қарастырайық. Содан кейін біз айналудың бірінің осі мен вектор өтетін шеңбердің нүктесін анықтай аламыз, және айналу бұрышын белгілеу үшін шеңбердің радиусын таңдай аламыз. Сол сияқты, айналу осі xy жазықтықта жатқан айналуды үш өлшемдегі радиусы белгіленген сферадағы нүкте ретінде сипаттауға болады. Үш өлшемді кеңістіктегі сфераның солтүстік полюсінен бастау, солтүстік полюс нүктесін сәйкестік айналым (нөл бұрышты айналым) деп атаймыз. Тіпті бірдейлік айналу жағдайында да айналу осі анықталмаған, ал айналу бұрышы (нөл) маңызды емес. Өте кішкентай айналу бұрышы бар айналу xy жазықтығына параллель сфера арқылы кесу арқылы және солтүстік полюске өте жақын анықталуы мүмкін. Бұл кесіндімен анықталатын шеңбер өте кішкентай болады, ол айналудың кішкентай бұрышына сәйкес келеді. Айналу бұрыштары ұлғая бастаған сайын, кесінді теріс z бағытында қозғалады, ал шардың экваторына жеткенше шеңберлер ұлғаяды, бұл 180 градус айналу бұрышына сәйкес келеді. Оңтүстікке қарай жалғаса отырып, шеңберлердің радиусы енді кішірейеді (жағымсыз сан ретінде қарастырылған айналу бұрышының абсолюттік мәніне сәйкес келеді). Ақырында, оңтүстік полюске жеткенде, шеңберлер тағы бір рет сәйкестік айналымға дейін қысқарады, ол сондай-ақ оңтүстік полюс нүктесі ретінде көрсетілген. Байқаңыз, мұндай айналулардың бірқатар сипаттамалары мен олардың бейнелері осы визуализация арқылы көрінеді. Айналу кеңістігі үздіксіз, әрбір айналудың айналудың көршілес аймағы бар, олар бірдей, ал бұл көршілес аймақ көршілес аймақ қысқара бастаған сайын жазық болады. Сонымен қатар, әрбір айналу шардың ортасы арқылы өтетін түзудің қарама-қарсы шеттерінде орналасқан шардағы екі антиподальді нүктемен бейнеленеді. Бұл әрбір айналудың кейбір осьтердегі айналу ретінде немесе, баламалы түрде, қарама-қарсы бағыттағы осьтердегі теріс айналу ретінде бейнеленуі мүмкін екендігін көрсетеді (екінші жақты жабу деп аталады). Белгілі бір айналу бұрышын бейнелейтін шеңбердің "кеңдік" бұрышы сол айналумен бейнеленген бұрыштың жартысы болады, өйткені нүкте солтүстіктен оңтүстік полюске жылжыған кезде ендік нөлден 180 градусқа дейін, ал айналу бұрышы 0-ден 360 градусқа дейін. (Осы жағдайда нүктелердің "ұзындығы" белгілі бір айналу осі болып табылады.) Алайда, бұл айналымдар жиынтығы композиция бойынша жабық емес екеніне назар аударыңыз. Екі рет қатар айналғанда, xy жазықтықтағы осімен айналу осі xy жазықтықта жатқан айналуды бермейді, сондықтан оны сферадағы нүкте ретінде көрсетуге болмайды. Бұл 3 кеңістіктегі жалпы айналу жағдайында болмайды, онда айналулар композиция бойынша жабық жиынтықты құрайды. Бұл визуализацияны 3 өлшемді кеңістіктегі жалпы айналымға дейін кеңейтуге болады. Сәйкестік айналу нүкте болып табылады, ал кейбір осьтердегі айналудың кішкентай бұрышы шағын радиусы бар сферадағы нүкте ретінде бейнеленуі мүмкін. Айналу бұрышы өскен сайын сфера да өседі, айналу бұрышы 180 градусқа жеткенше, бұл сәтте сфера қысқара бастайды, бұрыш 360 градусқа жақындаған сайын нүктеге айналады (немесе теріс бағыттан нөл градусқа). Бұл кеңейіп, жиырылатын сфералар жиыны төрт өлшемді кеңістіктегі гиперсфераны (3 сфера) білдіреді. Жоғарыдағы қарапайым мысалдағыдай, гиперсферадағы нүкте ретінде бейнеленген әрбір айналу сол гиперсферадағы оның антиподальді нүктесімен сәйкес келеді. Гиперсферадағы "кеңдік" айналу бұрышының жартысы болады, ал кез-келген нүктенің маңы "жазық" болады (яғни 3D-дегі Евклидтік нүктелер кеңістігімен бейнеленеді), өйткені маңы қысқарады. Бұл мінез-құлық бірлік квадерниондар жиынтығымен сәйкес келеді: Жалпы квадернион төрт өлшемді кеңістіктегі нүктеге тең, бірақ оны бірлік шамасымен шектегенде гиперсфераның бетіне тең үш өлшемді кеңістік пайда болады. Кватернион бірлігінің шамасы бірлік радиусты гиперсфераға сәйкес келетін бірлік болады. Бірлік кватернионның вектор бөлігі айналу осьтеріне сәйкес келеді, ал оның шамасы айналу бұрышының жартысының синусы болады. Әрбір айналу қарама-қарсы таңбалы екі бірлік кватернионмен бейнеленеді, және, үш өлшемді кеңістіктегі айналулар кеңістігіндегідей, екі бірлік кватернионның кватерниондық көбейтіндісі бірлік кватернионды береді. Сонымен қатар, бірлік кватерниондар кеңістігі берілген бірлік кватернионның кез келген кішкентай маңында "жазық" болады.
Айналу кеңістігін параметрлеу
Біз сфераның бетін екі координат арқылы параметрлеуге болады, мысалы, ендік және бойлық. Бірақ ендік және бойлық солтүстік және оңтүстік полюстерде дұрыс емес (шашты доп теоремасымен сипатталғандай) мінез-құлық көрсетеді, дегенмен полюстер сферадағы басқа нүктелерден ешқандай айырмашылығы жоқ. Полюстерде (ендігі +90° және -90°) бойлық мәнсіз болады. Екі параметрлі координат жүйесі мұндай дегенерациядан қашын ала алмайтынын көрсетуге болады. Біз шарды үш өлшемді кеңістікке енгізу арқылы және оны үш декартық координаттармен (w, x, y) параметрлеу арқылы осындай мәселелерден аулақ бола аламыз, солтүстік полюсті 1=(w, x, y) = (1, 0, 0), оңтүстік полюсті 1=(w, x, y) = (−1, 0, 0), ал экваторды 1=w = 0, 1=x^(2) + y^(2) = 1 деп белгілейміз. Сферадағы нүктелер 1=w^(2) + x^(2) + y^(2) = 1 шартын қанағаттандырады, сондықтан үш координат болғанымен, бізде әлі де екі еркіндік дәрежесі бар. Сферадағы (w, x, y) нүктесі (x, y, 0) векторымен бағытталған көлденең осьтің айналасындағы кеңістіктегі бұрышты көрсетеді. Сол сияқты, 3D айналымдардың гиперсфералық кеңістігі үш бұрышпен (Ойлер бұрыштары) параметрленуі мүмкін, бірақ мұндай параметрлеу гиперсферадағы кейбір нүктелерде дегенерацияға алып келеді, бұл Gimbal Lock мәселесіне әкеледі. Біз бұған төрт евкалидтік координатты w, x, y, z пайдаланып, 1=w^(2) + x^(2) + y^(2) + z^(2) = 1 шарты арқылы жол бермеуге болады. (w, x, y, z) нүктесі (x, y, z) векторымен бағытталған осьтің айналасындағы бұрышты көрсетеді.
In the same way the hyperspherical space of 3D rotations can be parameterized by three angles (Euler angles), but any such parameterization is degenerate at some points on the hypersphere, leading to the problem of gimbal lock. We can avoid this by using four Euclidean coordinates w, x, y, z, with 1=w^(2) + x^(2) + y^(2) + z^(2) = 1. The point (w, x, y, z) represents a rotation around the axis directed by the vector (x, y, z) by an angle
Коммутативтілік болмауы
Квартерниондардың көбейтілуі коммутативті емес. Осы факті 'p' ↦ 'q p q'^(−1) формуласының қалай жұмыс істей алатынын түсіндіреді, себебі 1='q q'^([[көбейтуге кері шамасы бойынша анықтамасы. Бірлік кватерниондардың көбейтілуі үш өлшемді айналымдардың құрамына сәйкес келетіндіктен, бұл қасиет үш өлшемді айналымдардың жалпы жағдайда коммутативті емес екенін көрсету арқылы түсінікті болуы мүмкін. Оң жақтағы сурет осыны ойыншық текшелер арқылы көрсетеді. Оң қолыңызбен 90 градус бұрылу жасаңыз. Екі текше де бастапқыда сол жоғарғы бұрышта көрсетілгендей орналасқан (жоғарғы жағында 1 нүктемен). A жолы –y осьінің айналуымен басталады (оң қол ережесін қолданып), содан кейін +z осьінің айналуымен жалғасады, нәтижесінде төменгі сол жақ бұрышта көрсетілгендей орналасады (жоғарғы жағында 5 нүкте). B жолы операциялардың ретін өзгертеді, нәтижесінде үстіңгі жағында 3 нүкте пайда болады. Егер сізде текшелер болмаса, екі кітапты қатар қойыңыз. Біреуін z осьінің айналысы бойынша 90 градусқа, содан кейін x осьінің айналысы бойынша 180 градусқа бұрыңыз. Екінші кітапты алып, алдымен x осьінің айналысы бойынша 180 градусқа, содан кейін z осьінің айналысы бойынша сағат тілімен 90 градусқа бұрыңыз. Екі кітап параллель болмайды. Бұл екі түрлі кеңістіктік осьтердегі екі айналудың құрамының жалпы жағдайда коммутативті емес екенін көрсетеді.
Бағдарлау
Кескіндік бұрышты бейнелеуді анықтау үшін қолданылатын векторлық көбейтінді кеңістікке бағдар береді: үш өлшемді векторлық кеңістікте 1 = 'a' × 'b' = 'c' теңдеуіндегі үш вектор әрқашан оң жақты жиынтығын (немесе векторлық көбейтінді қалай анықталғандығына байланысты сол жақты жиынтығын) құрайды, осылайша векторлық кеңістікте бағдарды бекітеді. Басқаша айтқанда, бағдарға тәуелділік осьтік векторларға қатысты айналуды анықтайтын бағытқа сілтеме жасау арқылы көрінеді. Кватерниондық формализмде кеңістіктің бағдарын таңдау көбейту ретіне сәйкес келеді: 1 = 'ij' = 'k', бірақ 1 = 'ji' = −'k'. Егер бағдарды кері бұрсақ, онда жоғарыдағы формула 'p' ↦ 'q'^(−1) 'p q' түріне өтеді, яғни бірлік 'q' кватернионның қосымшасына алмастырылады – бұл осьтік векторлардың мінез-құлқымен ұқсас.
Ортогональ матрицадан кватернионға
Ротациялық матрицаны кватернионға түрлендіргенде сақтық қажет, себебі бірнеше тікелей әдістер айналым матрицасының іздері (диагональдық элементтерінің қосындысы) нөлге немесе өте кішкентай мәнге жақын болғанда тұрақсыздыққа бейім. Ортогональды матрицаны кватернионға түрлендірудің тұрақты әдісі үшін Ротациялық матрица#Кватернион бөлімін қараңыз.
Квартернионды орнату
Жоғарыдағы бөлімде 3 × 3 айналу матрицасы Q-дан 'q' кватернионын қалай қалпына келтіру керектігі сипатталды. Бірақ, егер бізде Q матрицасы болса, ол таза айналу емес – мысалы, дөңгелектеу қателігінен туындап, және біз Q-ны ең дәл бейнелейтін 'q' кватернионын табуды қаласақ, онда біз симметриялық 4 × 4 матрица құрастырамыз және ең үлкен өзіндік мәнге сәйкес келетін (x, y, z, w) өзіндік векторды табамыз (бұл мән 1-ге тең болады, егер және тек қана Q таза айналу болса). Осылайша алынған кватернион бастапқы Q матрицасына ең жақын айналуға сәйкес келеді.
and find the eigenvector (x, y, z, w) corresponding to the largest eigenvalue (that value will be 1 if and only if Q is a pure rotation). The quaternion so obtained will correspond to the rotation closest to the original matrix Q .
Орындауды салыстыру
Бұл бөлім 3D кеңістікте айналуларды кватерниондар арқылы жасаудың, сондай-ақ басқа әдістермен (ось/бұрыш немесе айналу матрицалары) салыстырғандағы тиімділік мәселелерін қарастырады.
4D кеңістіктегі айналымдар ретінде бірлік квартерниондар жұбы
'z'l және 'z'r' бірлік кватерниондары жұбы 4D кеңістікте кез келген айналымды көрсете алады. Төрт өлшемді вектор берілгенде, және ол кватернион болса, онда векторды былай айналдыруға болады:
Матрицалар жұбы ℝ4 айналуын көрсетеді. Екі матрицаның алмастырылатынын ескеріңіз. Сондықтан, төрт өлшемді айналымдар тобының екі өзара алмасатын кіші тобы бар. Төрт өлшемді кез келген айналымның 6 еркіндік дәрежесі бар; әрбір матрица осы 6 еркіндік дәрежесінің 3-ін көрсетеді. Төрт өлшемді айналымдардың генераторларын кватерниондар жұбы арқылы (төменде көрсетілгендей) бейнелеуге болатындықтан, барлық төрт өлшемді айналымдар да бейнелене алады.