所以厄米特曲线中非端点 P1 的斜率为 (P2-P0)/2。但是,如果我不希望斜率为 0,你将如何获得端点的斜率?
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 )。
这里的切向量与上面第一个定义的大小不同,但方向(因此,斜率)是相同的。