埃尔米特曲线 Hermite Curve

Introduction

给定曲线的两个端点的位置矢量 P ( 0 ) P(0) P(0), P ( 1 ) P(1) P(1) )和切线矢量 P ′ ( 0 ) P'(0) P(0), P ′ ( 1 ) P'(1) P(1) )来描述曲线:

Proof

设方程为:
P ( t ) = a t 3 + b t 2 + c t + d (0) P(t) = at^{3} + bt^{2} + ct +d \tag{0} P(t)=at3+bt2+ct+d(0)
则:
P ′ ( t ) = 3 a t 2 + 2 b t + c (1) P'(t) = 3at^{2} + 2bt + c \tag{1} P(t)=3at2+2bt+c(1)
则可得:
{ P ( 0 ) = d P ( 1 ) = a + b + c + d P ′ ( 0 ) = c P ( 1 ) = 3 a + 2 b + c (2) \begin{cases} & P(0) = d \\ & P(1) = a + b + c + d \\ & P'(0) = c \\ & P(1) = 3a + 2b + c \end{cases} \tag{2} P(0)=dP(1)=a+b+c+dP(0)=cP(1)=3a+2b+c(2)
令:
h 0 = P ( 0 ) h 1 = P ( 1 ) h 2 = P ′ ( 0 ) h 3 = P ′ ( 1 ) (3) h_{0} = P(0) \\ h_{1} = P(1) \\ h_{2} = P'(0) \\ h_{3} = P'(1) \tag{3} h0=P(0)h1=P(1)h2=P(0)h3=P(1)(3)
则有:
[ h 0 h 1 h 2 h 3 ] = [ 0 0 0 1 1 1 1 1 0 0 1 0 3 2 1 0 ] [ a b c d ] (4) \left[ \begin{matrix} h_{0} \\ h_{1} \\ h_{2} \\ h_{3} \end{matrix} \right]= \left[ \begin{matrix} 0 & 0 & 0 & 1 \\ 1 & 1 & 1 & 1 \\ 0 & 0 & 1 & 0 \\ 3 & 2 & 1 & 0 \end{matrix} \right] \left[ \begin{matrix} a \\ b \\ c \\ d \end{matrix} \right] \tag{4} h0h1h2h3=0103010201111100abcd(4)
⇒ [ a b c d ] = [ h 0 h 1 h 2 h 3 ] [ 2 − 2 1 1 − 3 3 − 2 − 1 0 0 1 0 1 0 0 0 ] (5) \Rightarrow \left[ \begin{matrix} a \\ b \\ c \\ d \end{matrix} \right]= \left[ \begin{matrix} h_{0} \\ h_{1} \\ h_{2} \\ h_{3} \end{matrix} \right] \left[ \begin{matrix} 2 & -2 & 1 & 1 \\ -3 & 3 & -2 & -1 \\ 0 & 0 & 1 & 0 \\ 1 & 0 & 0 & 0 \end{matrix} \right] \tag{5} abcd=h0h1h2h32301230012101100(5)
又:
P ( t ) = [ a b c d ] [ t 3 t 2 t 1 ] (6) P(t) = \left[ \begin{matrix} a & b & c & d \end{matrix} \right] \left[ \begin{matrix} t^{3} \\ t^{2} \\ t \\ 1 \end{matrix} \right] \tag{6} P(t)=[abcd]t3t2t1(6)
则由 (4) (5) (6) 可得:
P ( t ) = [ a b c d ] [ 0 1 0 3 0 1 0 2 0 1 1 1 1 1 0 0 ] [ 2 − 3 0 1 − 2 3 0 0 1 − 2 1 0 1 − 1 0 0 ] [ t 3 t 2 t 1 ] (7) P(t) = \left[ \begin{matrix} a & b & c & d \end{matrix} \right] \left[ \begin{matrix} 0 & 1 & 0 & 3 \\ 0 & 1 & 0 & 2 \\ 0 & 1 & 1 & 1 \\ 1 & 1 & 0 & 0 \end{matrix} \right] \left[ \begin{matrix} 2 & -3 & 0 & 1 \\ -2 & 3 & 0 & 0 \\ 1 & -2 & 1 & 0 \\ 1 & -1 & 0 & 0 \end{matrix} \right] \left[ \begin{matrix} t^{3} \\ t^{2} \\ t \\ 1 \end{matrix} \right] \tag{7} P(t)=[abcd]00011111001032102211332100101000t3t2t1(7)
其中,中间两个矩阵互为逆矩阵,乘积为单位矩阵。又由 (5) 可得:
P ( t ) = [ h 0 h 1 h 2 h 3 ] [ 2 − 3 0 1 − 2 3 0 0 1 − 2 1 0 1 − 1 0 0 ] [ t 3 t 2 t 1 ] (8) P(t) = \left[ \begin{matrix} h_{0} & h_{1} & h_{2} & h_{3} \end{matrix} \right] \left[ \begin{matrix} 2 & -3 & 0 & 1 \\ -2 & 3 & 0 & 0 \\ 1 & -2 & 1 & 0 \\ 1 & -1 & 0 & 0 \end{matrix} \right] \left[ \begin{matrix} t^{3} \\ t^{2} \\ t \\ 1 \end{matrix} \right] \tag{8} P(t)=[h0h1h2h3]2211332100101000t3t2t1(8)
再令:
[ H 0 ( t ) H 1 ( t ) H 2 ( t ) H 3 ( t ) ] = [ 2 − 3 0 1 − 2 3 0 0 1 − 2 1 0 1 − 1 0 0 ] [ t 3 t 2 t 1 ] (9) \left[ \begin{matrix} H_{0}(t) \\ H_{1}(t) \\ H_{2}(t) \\ H_{3}(t) \end{matrix} \right]= \left[ \begin{matrix} 2 & -3 & 0 & 1 \\ -2 & 3 & 0 & 0 \\ 1 & -2 & 1 & 0 \\ 1 & -1 & 0 & 0 \end{matrix} \right] \left[ \begin{matrix} t^{3} \\ t^{2} \\ t \\ 1 \end{matrix} \right] \tag{9} H0(t)H1(t)H2(t)H3(t)=2211332100101000t3t2t1(9)
最终可得:
[ a b c d ] [ t 3 t 2 t 1 ] = [ h 0 h 1 h 2 h 3 ] [ H 0 ( t ) H 1 ( t ) H 2 ( t ) H 3 ( t ) ] (10) \left[ \begin{matrix} a & b & c & d \end{matrix} \right] \left[ \begin{matrix} t^{3} \\ t^{2} \\ t \\ 1 \end{matrix} \right]= \left[ \begin{matrix} h_{0} & h_{1} & h_{2} & h_{3} \end{matrix} \right] \left[ \begin{matrix} H_{0}(t) \\ H_{1}(t) \\ H_{2}(t) \\ H_{3}(t) \end{matrix} \right] \tag{10} [abcd]t3t2t1=[h0h1h2h3]H0(t)H1(t)H2(t)H3(t)(10)
即:
P ( t ) = ∑ i = 0 3 h i H i ( t ) (11) P(t) = \sum_{i = 0}^{3}h_{i}H_{i}(t) \tag{11} P(t)=i=03hiHi(t)(11)
H i ( t ) H_{i}(t) Hi(t) 即为构成埃尔米特曲线的基本曲线方程。这四个基本曲线方程如下:

埃尔米特曲线:
其中箭头为切线方向
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值