贝塞尔曲线学习笔记

贝塞尔曲线(Bézier Curves)学习笔记

​ 最近在研究贝塞尔曲线,顺便记录下学习心得。

Bézier Curves—de Casteljau Algorithm(德卡斯特里奥算法)

​ Bézier Curves是依照de Casteljau Algorithm画出来的,以quadratic Bezier为例:
在这里插入图片描述
​ 给定三个控制点 b 0 、 b 1 、 b 2 . b_{0}、b_{1}、b_{2}. b0b1b2.
在这里插入图片描述
假设曲线从时间0开始至时间1结束,规定t为对应时间t。那么我们只需要找到任意t对应的位置即可。

其中 b 0 1 b_{0}^1 b01为线段 b 0 b_{0} b0 b 1 b_{1} b1上时间t时对应的位置, b 1 1 b_{1}^1 b11为线段 b 1 b_{1} b1 b 2 b_{2} b2上时间t对应的位置, b 0 2 b_{0}^2 b02为线段 b 0 1 b 1 1 b_{0}^1 b_{1}^1 b01b11上时间t对应的位置,那么 b 0 2 b_{0}^2 b02就为时间t对应的Bézier Curves上的点。
在这里插入图片描述

这个算法称作de Casteljau Algorithm。假设某点时刻t对应的位置b,其相关函数为b(t)。那么显然(将t=0,t=1带入验证)

b 0 1 ( t ) = ( 1 − t ) b 0 + t b 1 b_{0}^1(t) = (1-t)b_{0} + tb_{1} b01(t)=(1t)b0+tb1

b 1 1 ( t ) = ( 1 − t ) b 1 + t b 2 b_{1}^1(t) = (1-t)b_{1} + tb_{2} b11(t)=(1t)b1+tb2

b 0 2 ( t ) = ( 1 − t ) b 0 1 + t b 1 1 b_{0}^2(t) = (1-t)b_{0}^1 + tb_{1}^1 b02(t)=(1t)b01+tb11

展开上式得 b 0 2 ( t ) = ( 1 − t ) 2 b 0 + 2 t ( 1 − t ) b 1 + t 2 b 2 b_{0}^2(t) = (1-t)^2b_{0} + 2t(1-t)b_{1}+t^2b_{2} b02(t)=(1t)2b0+2t(1t)b1+t2b2

则可以得到n阶贝塞尔曲线可以表示为
b n ( t ) = ∑ j = 0 n b j B j n ( t ) b^n(t) =\sum _{j=0}^n b_{j}B_{j}^n(t) bn(t)=j=0nbjBjn(t)

其中 B j n ( t ) B_{j}^n(t) Bjn(t)为伯恩斯坦多项式

B j n ( t ) = ( i n ) t i ( 1 − t ) n − i B_{j}^n(t)= \left (_{i}^n \right) t^i(1-t)^{n-i} Bjn(t)=(in)ti(1t)ni
伯恩斯坦多项式可以从概率论的角度进行解释:假设做一个实验成功的概率是u ,每次实验间是相互独立同分布的随机变量,满足伯努利分布(Bernoulli law)。 如果连续尝试这个实验 n 次,则成功次数正好是 i 次的概率。

伯恩斯坦多项式是对称的,因为 ( i n ) \left (_{i}^n \right) (in)= ( n − i n ) \left (_{n-i}^n \right) (nin)
在这里插入图片描述

贝塞尔曲线的一些性质:

  1. 各项系数之和为1

  2. 对称性

  3. 递归性

    (性质2和3都可以从上面推导出)

  4. 凸包(Convex Hull)性质

    贝塞尔曲线始终会在包含了所有控制点的最小凸多边形中, 不是按照控制点的顺序围成的最小多边形.

在这里插入图片描述

5.仿射变换(Affine transformation)性质

在几何上对贝塞尔曲线做仿射变换相当于对其控制点做仿射变换再求对应的贝塞尔曲线,其效果是等价的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值