贝塞尔曲线 Bezier Curve

Introduction

B e ˊ zier Curve \text{B\'ezier Curve} Beˊzier Curve 实际上是有一个调和函数(Harmonic functions)根据控制点(Control Points)插值生成。
其参数方程如下:
(0) Q ( t ) = ∑ i = 0 n P i B i , n ( t ) , t ∈ [ 0 , 1 ] Q(t) = \sum_{i=0}^nP_{i}B_{i,n}(t) ,t\in[0,1] \tag{0} Q(t)=i=0nPiBi,n(t)t[0,1](0)
上式为n次多项式,具有 n + 1 n + 1 n+1。 其中, P ( i = 0 , 1 … n ) P(i=0,1\dots n) P(i=0,1n)表示多边形的 n + 1 n+1 n+1个顶点向量; B i , n ( t ) B_{i,n}(t) Bi,n(t) 为伯恩斯坦(Berstein)基函数,其多项式表示为:
(1) B i , n ( t ) = n ! i ! ( n − i ) ! t i ( 1 − t ) n − i , i = 0 , 1 … n B_{i,n}(t)=\frac{n!}{i!(n-i)!}t^{i}(1-t)^{n-i}, i=0, 1\dots n\tag{1} Bi,n(t)=i!(ni)!n!ti(1t)ni,i=0,1n(1)

Linear B e ˊ zier Curve \text{Linear B\'ezier Curve} Linear Beˊzier Curve

有两个控制点,表达式如下:
Q ( t ) = ∑ i 1 P i B i , 1 ( t ) = P 0 B 0 , 1 ( t ) + P 1 B 1 , 1 ( t ) = ( 1 − t ) P 0 + t P 1 = [ t 1 ] [ − 1 1 1 0 ] [ P 0 P 1 ] , t ∈ [ 0 , 1 ] \begin{aligned} Q(t) & = \sum_{i}^{1}P_{i}B_{i,1}(t) = P_{0}B_{0,1}(t) + P_{1}B_{1,1}(t) \\ & = (1-t)P_{0} + tP_{1} \\ & = \left[ \begin{matrix} t & 1 \end{matrix} \right] \left[ \begin{matrix} -1 & 1 \\ 1 & 0 \end{matrix} \right] \left[ \begin{matrix} P_{0} \\ P_{1} \end{matrix} \right] \end{aligned} ,t \in[0,1] Q(t)=i1PiBi,1(t)=P0B0,1(t)+P1B1,1(t)=(1t)P0+tP1=[t1][1110][P0P1],t[0,1]
可以看出,这就是一条直线:
在这里插入图片描述

Quadratic B e ˊ zier Curve \text{Quadratic B\'ezier Curve} Quadratic Beˊzier Curve

有三个控制点:
Q ( t ) = ∑ i = 0 2 P 0 B 0 , 2 ( t ) + P 1 B 1 , 2 ( t ) + P 2 B 2 , 2 ( t ) = ( 1 − t ) 2 P 0 + 2 t ( 1 − t ) P 1 + t 2 P 2 = ( P 2 − 2 P 1 + P 0 ) t 2 + 2 ( P 1 − P 0 ) t + P 0 = [ t 2 t 1 ] [ 1 − 2 1 − 2 2 0 1 0 0 ] [ P 0 P 1 P 2 ] , t ∈ [ 0 , 1 ] \begin{aligned} Q(t)& = \sum_{i=0}^{2}P_{0}B_{0,2}(t) + P_{1}B_{1,2}(t) + P_{2}B_{2,2}(t) \\ & = (1-t)^{2}P_{0} + 2t(1-t)P_{1} + t^{2}P_{2} \\ & = (P_{2} - 2P_{1} + P_{0})t^{2} + 2(P_{1} - P_{0})t + P_{0} \\ & = \left[ \begin{matrix} t^{2} & t & 1 \end{matrix} \right] \left[ \begin{matrix} 1 & -2 & 1 \\ -2 & 2 & 0 \\ 1 & 0 & 0 \end{matrix} \right] \left[ \begin{matrix} P_{0} \\ P_{1} \\ P_{2} \end{matrix} \right] & & &, t \in [0,1] \end{aligned} Q(t)=i=02P0B0,2(t)+P1B1,2(t)+P2B2,2(t)=(1t)2P0+2t(1t)P1+t2P2=(P22P1+P0)t2+2(P1P0)t+P0=[t2t1]121220100P0P1P2,t[0,1]
这是一条抛物线(parabola):
在这里插入图片描述

Properties

Symmetry 对称性

B i , n ( t ) = B n − i , n ( t ) B_{i,n}(t) = B_{n - i,n}(t) Bi,n(t)=Bni,n(t)
根据二项式定理易得

Geometric Invariant 旋转不变性

曲线的形状取决于控制点的位置,当旋转时,控制点之间相对位置不变,曲线不变。
由此可得:只需对控制点进行旋转,即可绘制旋转后的曲线:
在这里插入图片描述

Implementation with C++

L O A D I N G … \mathscr{LOADING}\dots LOADING

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值