Кіріспе
Компьютерлік графикадағы сфералық сызықтық интерполяция
Компьютерлік графикада slerp – Кен Шомейке 3D айналымды анимациялау мақсатында кватерниондық интерполяция контекстінде енгізген сфералық сызықтық интерполяцияның аббревиатурасы. Бұл 0 мен 1 аралығындағы интерполяция параметрі және доғаның соңғы нүктелері берілгенде, бірлік радиусы бар үлкен шеңбер доғасы бойымен тұрақты жылдамдықпен қозғалуды білдіреді.
Геометриялық слерп
Слерптің кватерниондардан тәуелсіз геометриялық формуласы бар және доға салынған кеңістіктің өлшемінен тәуелсіз. Гленн Дэвис есімді ғалымға жатқызылатын симметриялық салмақталған соманың бұл формуласы, қисықтағы кез келген нүкте доғаның ұштарының сызықтық комбинациясы болуы керек деген фактіге негізделген. p0 және p1 доғаның бірінші және соңғы нүктелері болсын, ал t – 0 ≤ t ≤ 1 шегіндегі параметр. Ω-ны доғаның астындағы бұрыш ретінде есептейміз, ол бастапқы нүктеден доғаның ұштарына дейінгі бірлік векторлардың n өлшемді скалярлық көбейтіндісіне тең. Геометриялық формула мынадай болады:
The symmetry lies in the fact that slerp(p0, p1; t) In the limit as Ω → 0, this formula reduces to the corresponding symmetric formula for linear interpolation,
A slerp path is, in fact, the spherical geometry equivalent of a path along a line segment in the plane; a great circle is a spherical geodesic. More familiar than the general slerp formula is the case when the end vectors are perpendicular, in which case the formula is p0cos θ + p1sin θ. Letting , and applying the trigonometric identity , this becomes the slerp formula. The factor of 1/sin Ω in the general formula is a normalization, since a vector p1 at an angle of Ω to p0 projects onto the perpendicular ⊥p0 with a length of only sin Ω. Some special cases of slerp admit more efficient calculation. When a circular arc is to be drawn into a raster image, the preferred method is some variation of Bresenham's circle algorithm. Evaluation at the special parameter values 0 and 1 trivially yields p0 and p1, respectively; and bisection, evaluation at , simplifies to (p0 + p1)/2, normalized. Another special case, common in animation, is evaluation with fixed ends and equal parametric steps. If pk−1 and pk are two consecutive values, and if c is twice their dot product (constant for all steps), then the next value, pk+1, is the reflection .
Симметрия 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 – бұл кері проекция.
The symmetry lies in the fact that slerp(p0, p1; t) In the limit as Ω → 0, this formula reduces to the corresponding symmetric formula for linear interpolation,
A slerp path is, in fact, the spherical geometry equivalent of a path along a line segment in the plane; a great circle is a spherical geodesic. More familiar than the general slerp formula is the case when the end vectors are perpendicular, in which case the formula is p0cos θ + p1sin θ. Letting , and applying the trigonometric identity , this becomes the slerp formula. The factor of 1/sin Ω in the general formula is a normalization, since a vector p1 at an angle of Ω to p0 projects onto the perpendicular ⊥p0 with a length of only sin Ω. Some special cases of slerp admit more efficient calculation. When a circular arc is to be drawn into a raster image, the preferred method is some variation of Bresenham's circle algorithm. Evaluation at the special parameter values 0 and 1 trivially yields p0 and p1, respectively; and bisection, evaluation at , simplifies to (p0 + p1)/2, normalized. Another special case, common in animation, is evaluation with fixed ends and equal parametric steps. If pk−1 and pk are two consecutive values, and if c is twice their dot product (constant for all steps), then the next value, pk+1, is the reflection .
Кватерниондық слерп
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 алгоритмінің белгіленген орындалу уақытын жоғалтады.
Writing a unit quaternion q in versor form, cos Ω + v sin Ω, with v a unit 3 vector, and noting that the quaternion square v2 equals −1 (implying a quaternion version of Euler's formula), we have , and The identification of interest is , so that the real part of q is cos Ω, the same as the geometric dot product used above. Here are four equivalent quaternion expressions for slerp. The derivative of slerp(q0, q1; t) with respect to t, assuming the ends are fixed, is log(q1q0−1) times the function value, where the quaternion natural logarithm in this case yields half the 3D angular velocity vector. The initial tangent vector is parallel transported to each tangent along the curve; thus the curve is, indeed, a geodesic. In the tangent space at any point on a quaternion slerp curve, the inverse of the exponential map transforms the curve into a line segment. Slerp curves not extending through a point fail to transform into lines in that point's tangent space. Quaternion slerps are commonly used to construct smooth animation curves by mimicking affine constructions like the de Casteljau algorithm for Bézier curves. Since the sphere is not an affine space, familiar properties of affine constructions may fail, though the constructed curves may otherwise be entirely satisfactory. For example, the de Casteljau algorithm may be used to split a curve in affine space; this does not work on a sphere. The two valued slerp can be extended to interpolate among many unit quaternions, but the extension loses the fixed execution time of the slerp algorithm.