如何获得Hermite样条曲线中端点的斜率?

时间:2013-04-29 03:33:44

标签: graphics spline

因此,厄米特曲线中非终点P1的斜率为(P2-P0)/ 2。但是,如果我不希望斜率为0,你将如何获得端点的斜率?

1 个答案:

答案 0 :(得分:1)

我猜你的意思是由两个端点和一个(内部)控制点定义的二次贝塞尔曲线,因为Hermite曲线已经由切向量定义(斜率就是R < em> iy / R ix ,i = 0..1,其中R 0 且R 1 是切向量)。此外,Hermite曲线是立方的并且具有4个控制点,即。 2个内部控制点。

因此,对于由P 0 定义的二次Bezier曲线,P 1 ,P 2 ,末端的切线=点P 0 和P 3 ,只是

  

T 0 = P 1 - P 0
  T 1 = P 2 - P 1

所以斜坡是

  

s 0 = T 0 y / T 0 x
  s 1 = T 1 y / T 1 x

这就是为什么这些曲线非常有用的原因,因为它们是由我们想要为设计目的而控制的特征定义的(通过将控制点放在通过公共端点的直线上来实现分段之间的连续性)。 p>

二次贝塞尔曲线也可以被认为是退化三次贝塞尔曲线,其中2个内部控制点重合(它们是相同的点);所以将“3点”曲线转换为Hermite形式的第一步是复制中间点,产生立方贝塞尔曲线。

  

B 0 = P 0
  B 1 = P 1
  B 2 = P 1
  B 3 = P 2

然后,使用Foley和Van Dam的等式(13.32),交互式计算机图形基础,可以用矩阵乘法生成Hermite形式

G_h = [ [ H_0 ]   = [ [  1  0  0  0 ]   [ [ B_0 ]    = M_hb G_b
        [ H_1 ]       [  0  0  0  1 ]     [ B_1 ]
        [ T_0 ]       [ -3  3  0  0 ]     [ B_2 ]
        [ T_1 ] ]     [  0  0 -3  3 ] ]   [ B_3 ] ]

IE中。两个端点相同(H 0 = B 0 ,H 1 = B 3 ),并且切向量只是相关点的加权和(T 0 = -3 * B 0 + 3 * B 1 ,T < sub> 1 = -3 * B 2 + 3 * B 3 )。

此处的切向量与上面的第一个定义的大小不同,但方向(因此,斜率)是相同的。