曲线总结

做导出插件遇到曲线问题,总结一下:

各种不同的曲线都可表示成:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值