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)=at3+bt2+ct+d(0)P(t) = at^{3} + bt^{2} + ct +d \tag{0} P(t)=at3+bt2+ct+d(0)
则:
P′(t)=3at2+2bt+c(1)P'(t) = 3at^{2} + 2bt + c \tag{1} P′(t)=3at2+2bt+c(1)
则可得:
{P(0)=dP(1)=a+b+c+dP′(0)=cP(1)=3a+2b+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)
令:
h0=P(0)h1=P(1)h2=P′(0)h3=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)
则有:
[h0h1h2h3]=[0001111100103210][abcd](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⎦⎥⎥⎤=⎣⎢⎢⎡0103010201111100⎦⎥⎥⎤⎣⎢⎢⎡abcd⎦⎥⎥⎤(4)
⇒[abcd]=[h0h1h2h3][2−211−33−2−100101000](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⎦⎥⎥⎤=⎣⎢⎢⎡h0h1h2h3⎦⎥⎥⎤⎣⎢⎢⎡2−301−23001−2101−100⎦⎥⎥⎤(5)
又:
P(t)=[abcd][t3t2t1](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)=[abcd][010301011100][2−301−23001−2101−100][t3t2t1](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]⎣⎢⎢⎡0001111100103210⎦⎥⎥⎤⎣⎢⎢⎡2−211−33−2−100101000⎦⎥⎥⎤⎣⎢⎢⎡t3t2t1⎦⎥⎥⎤(7)
其中,中间两个矩阵互为逆矩阵,乘积为单位矩阵。又由 (5) 可得:
P(t)=[h0h1h2h3][2−301−23001−2101−100][t3t2t1](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]⎣⎢⎢⎡2−211−33−2−100101000⎦⎥⎥⎤⎣⎢⎢⎡t3t2t1⎦⎥⎥⎤(8)
再令:
[H0(t)H1(t)H2(t)H3(t)]=[2−301−23001−2101−100][t3t2t1](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)⎦⎥⎥⎤=⎣⎢⎢⎡2−211−33−2−100101000⎦⎥⎥⎤⎣⎢⎢⎡t3t2t1⎦⎥⎥⎤(9)
最终可得:
[abcd][t3t2t1]=[h0h1h2h3][H0(t)H1(t)H2(t)H3(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=03hiHi(t)(11)P(t) = \sum_{i = 0}^{3}h_{i}H_{i}(t) \tag{11} P(t)=i=0∑3hiHi(t)(11)
Hi(t)H_{i}(t)Hi(t) 即为构成埃尔米特曲线的基本曲线方程。这四个基本曲线方程如下:
埃尔米特曲线: 其中箭头为切线方向