做导出插件遇到曲线问题,总结一下:
各种不同的曲线都可表示成:
s: 系数
P1: 起始点 P2:结束点 T1:起始点切线 T2:结束点切线
P: 所求插值点
| s^3 | | P1 | | h00 h01 h02 h03 |
S = | s^2 | C = | P2 | h = | h10 h11 h12 h13 |
| s^1 | | T1 | | h20 h21 h22 h23 |
| 1 | | T2 | | h30 h31 h32 h33 |
P = S * h * C
Hermite曲线系数:
(等同 TCB曲线)
h = | 2 -2 1 1 |
| -3 3 -2 -1 |
| 0 0 1 0 |
| 1 0 0 0 |
Bezier曲线系数:
(等同 HYBRID)
b = | -1 3 -3 1 |
| 3 -6 3 0 |
| -3 3 0 0 |
| 1 0 0 0 |
从控制点得到切线
t(Tension): 曲张度
c(Continuity): 改变速度
b(Bias) : 穿过控制点的方向
输入切线:
(1-t)*(1-c)*(1+b)
TS = ----------------- * ( P - P )
i 2 i i-1
(1-t)*(1+c)*(1-b)
+ ----------------- * ( P - P )
2 i+1 i
输出切线:
(1-t)*(1+c)*(1+b)
TD = ----------------- * ( P - P )
i 2 i i-1
(1-t)*(1-c)*(1-b)
+ ----------------- * ( P - P )
2 i+1 i
参考:
http://www.cubic.org/docs/hermite.htm
https://en.wikipedia.org/wiki/Kochanek%E2%80%93Bartels_spline