簡述 球型線性插值簡而言之就是在由起點p1和終點p2兩個基向量所構成的平面中,從一個端點到另外一個端點的移動過程.bash
球型線性插值公式以下:spa
q(t) = (1 - t)q1 + tq2
其中t的取值範圍爲[0,1],從公式就能夠看出 (1 - t)q1與tq2爲一個此消彼長的過程.
複製代碼
下圖是q(t)的q1份量,即a(t)的計算示意圖 code
sinθ(1-t)爲q(t)到q2的垂線長度,sinθ爲q1到q2的垂線長度 在這裏就能看出,sinθ(1-t)會隨着a(t)的增大而逼近sinθ,同時也會隨着a(t)的減少而逼近0. 也就意味着a(t)與q1徹底重合時:cdn
sinθ(1-t) = sinθ
sinθ(1-t)/sinθ = 1
複製代碼
a(t)與原點o重合時則:blog
sinθ(1-t) = 0
sinθ(1-t)/sinθ = 0
複製代碼
能夠發現這裏a(t)到q2的垂線長度的取值範圍就是[0,sinθ],其sinθ(1-t)/sinθ的結果也與t的取值範圍相重合. 所以便可經過該式算出a(t): (sinθ(1-t)/sinθ)*q1. q2份量b(t)的計算方式也與a(t)相似. it
b(t) = (sinθt/sinθ)*q2io
最後的q(t)即爲:class
q(t) = a(t) + b(t)lazyload