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