slerp=spherical linear interpolation球面線性插值

四元數支持球形線性插值,也就是當點沿着球體表面移動也可以看做是從一個方位移到另一個方位。

http://en.wikipedia.org/wiki/Slerp

Slerp球面線性插值

在計算機圖形學中,slerp是spherical linear interpolation(球面線性插值)的縮寫。最初由Ken Shoemaker爲了模擬3D旋轉在四元數插值(quaternion interpolation)的基礎上改進的方法。當給定末端且插值在0和1之間時,slerp指的是沿着單位半徑大圓的常速運動。

Geometric Slerp(幾何球面線性插值)


Slerp有一個獨立於四元數(quaternion)和弧所在空間維數的幾何方程。這個方程利用Glenn Davis提出的對稱加權和方法,曲線上的任意一點必是兩個終點的線性組合。假設P0和P1是圓弧的起點和終點,t代表參數且0 1,Ω是圓弧的圓心角,cosΩ=P0 • P1,即單位n維向量起點和終點的點積,幾何方程可寫做:


由於Slerp(P0, P1; t)=Slerp(P0, P1; 1- t),所以稱該方程具有對稱特性。Ω→0時,這個方程就退化爲線性插值方程:


Slerp路徑實際上就是平面線段在球面幾何上的等效。一種特殊的情況就是兩個終點向量垂直時,方程可寫做:


當θ=tπ/2時就成了slerp方程。一般方程中的1/sinΩ是標準化因子,因爲P1投影到⊥P0上的長度爲sinΩ。

在一些特殊的例子中,Slerp允許更高效的運算。當圓弧用像素圖表示時,更優先的方法是Bresenham的圓胡算法。在0,1/2,1處分別爲P0,(P0+P1)/2,P1;如果Pk-1和Pk是兩個連續的值,c是二者點積的2倍(所有步都是定值),則Pk+1=cPk-Pk-1

Quaternion Slerp四元數球面線性插值

當Slerp用在單位四元數中時,四元數路徑會映射到標準3D旋轉路徑,其效果就是繞着固定軸做勻速旋轉。當初始點是同一四元數時,Slerp給出3D旋轉李氏羣S0(3)單參數子集和單位四元數泛覆蓋羣S^3的線段。Slerp給出它的四元數端點之間的最直接最短的路徑,以及2^Ω角度的旋轉。然而,因爲覆蓋是對稱的(q和-q都可以是相同的旋轉),旋轉路徑要麼是最短的(<180°)要麼是最長的(>180°),這可以用cosΩ(-90°≤Ω≤90°)來限定。Slerp也可以由四元數代數方程表述,都是用指數。


把單位四元數q寫成規範化形式,cosΩ+vsinΩ,v是3維單位向量且v^2=-1(要寫成歐拉方程),因此有e^vΩ=q,q^t=costΩ+vsintΩ。其中q=q1q0^(-1),以使q的實部爲cosΩ。以下是四個等效的Slerp四元數表達式:


當終端確定時,Slerp(P0, P1; t)對t的導數爲log(q1q0^(-1))乘四元數的自然對數是3D角速度向量一半時的函數值。最初的切向量被沿着曲線平行傳輸到每一個切線上,從而保證曲線是最短的。

在四元數Slerp曲線上的任何一點的切線空間中,指數映射的逆把曲線變換成了線段。沒有通過一個點進行延伸的slerp曲線則不會。四元數slerp通過模仿類似被賽爾曲線de Casteljau 算法的仿射結構來構造平滑曲線。因爲球面不是仿射空間所以就不能用仿射變換的特性,儘管這樣構造的曲線可能不太滿意。例如,de Casteljau算法用來分離一條仿射空間的曲線,這不能應用在球面上。

二值Slerp可以擴展到在許多單位四元數之間插值,但卻以犧牲四元數算法運算時間爲代價。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章