Введение
Сферическая линейная интерполяция в компьютерной графике
В компьютерной графике slerp – это сокращение от сферической линейной интерполяции, представленной Кеном Шомейком в контексте интерполяции кватернионов для анимации 3D-вращений. Она описывает равномерное движение по дуге большого круга единичного радиуса, заданное конечными точками и параметром интерполяции в диапазоне от 0 до 1.
Геометрический слерп
Слерп имеет геометрическую формулу, независимую от кватернионов и независимую от размерности пространства, в которое встроена дуга. Эта формула, симметричная взвешенная сумма, разработанная Гленном Дэвисом, основана на том факте, что любая точка на кривой должна быть линейной комбинацией конечных точек. Пусть p0 и p1 – первая и последняя точки дуги, а t – параметр, 0 ≤ t ≤ 1. Вычислите Ω как угол, под которым дуга видна из центра, так что , n-мерное скалярное произведение единичных векторов от начала координат к конечным точкам. Геометрическая формула тогда
Симметрия заключается в том, что slerp(p0, p1; t) . В пределе Ω → 0 эта формула сводится к соответствующей симметричной формуле линейной интерполяции.
Путь slerp, по сути, является сферическим геометрическим эквивалентом пути вдоль отрезка прямой на плоскости; большой круг – это сферическая геодезическая. Более известным, чем общая формула slerp, является случай, когда конечные векторы перпендикулярны, в этом случае формула принимает вид p0cos θ + p1sin θ. Подставляя и применяя тригонометрическое тождество, получаем формулу slerp. Фактор 1/sin Ω в общей формуле является нормализацией, поскольку вектор p1, образующий угол Ω с вектором p0, проецируется на перпендикуляр к p0 с длиной, равной только sin Ω. Некоторые частные случаи slerp допускают более эффективные вычисления. При отрисовке круговой дуги в растровом изображении предпочтительным методом является некоторая вариация алгоритма круга Брезенхема. Вычисление при специальных значениях параметра 0 и 1 тривиально дает p0 и p1 соответственно; а бисекция, вычисление при , упрощается до (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 — единичный вектор из трех компонент, и отмечая, что квадрат кватерниона v2 равен −1 (что подразумевает кватернионную версию формулы Эйлера), получаем , и интересующее нас тождество — , так что действительная часть q равна cos Ω, что совпадает с геометрическим скалярным произведением, использованным выше. Ниже приведены четыре эквивалентных кватернионных выражения для slerp. Начальный касательный вектор переносится параллельно вдоль всей кривой; следовательно, кривая действительно является геодезической. В тангентном пространстве в любой точке кватернионной кривой 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.