1

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

4

1 回答 1

1

我猜你的意思是由两个端点和一个(内部)控制点定义的二次贝塞尔曲线,因为 Hermite 曲线已经由切线向量定义(斜率只是 R i y / R i x,i= 0..1,其中 R 0和 R 1是切向量)。此外,Hermite 曲线是三次曲线,有 4 个控制点,即。2个内部控制点。

因此,对于由 P 0、 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

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

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

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 1 = -3*B 2 + 3*B 3 )。

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

于 2013-05-02T05:33:48.307 回答