1. 引言
刚体运动曲线的设计是计算机动画设计中的一个重要问题 [1]。刚体运动通常可以用两种运动的结合来描述:一种是刚体的平移运动,另一种是刚体的旋转运动。在计算机动画中,使用适当的工具来产生刚体平滑和自然运动是非常重要的。而用四元数方法取代欧拉角描述刚体运动的姿态,可以避免大角度旋转时的奇异性,并能完全的描述刚体运动的任何姿态,因此,四元数尤其是单位四元数在虚拟摄像头和三维物体的旋转控制中尤为重要。随着目前空间技术,计算技术,特别是计算机图形学等领域的发展,四元数的优越性又被研究人员重视了起来。
1985年,美国数学家Shoemake [2] 首次将四元数引入到计算机图形学中,并且主要介绍了用Bézier单位四元数曲线来表示刚体的运动。1995年,Kim [3] 等人利用Slerp给出了能够计算一阶导数的单位四元数曲线,并且得到了单位四元数曲线的二阶导数。还利用Bernstein [4] 基函数的累加形式给出了单位四元数的代数方程构造方法,并且首次在论文中给出了Bézier单位四元数曲线,Hermite单位四元数曲线和B-spline单位四元数曲线的代数表达形式。2007年,Ge [5] 等人提出了一种能够插值给定单位四元数序列的
连续B样条四元数曲线的构造方法,虽然同样需要求解非线性方程组,但是能够得到精确的四元数控制点。2017年,邢燕等人 [6] 对单位四元数插值样条曲线的参数二阶连续性与插值性问题进行了研究。为了使产生的四元数曲线连续性更高,2018年邢燕 [7] 将参数二阶连续性提高到了参数三阶连续性,构造了一类基于五次多项式的单位四元数插值样条曲线。檀结庆 [8] 等人提出了具有
连续性的五次多项式单位四元数插值样条曲线,该曲线能够自动插值于给定的数据点。2022年,孙楠等人 [9] 在Kim的基础上对Bézier四元数曲线的性质进行了研究,计算了其端点处的一阶,二阶导矢,解决了曲线的光滑拼接问题,构造出了具有
连续性的四元数插值样条曲线,此方法能够精确地插值于给定的单位四元数序列,并且无需求解非线性方程组。
1987年,Boehm [10] 提出了Gamma样条的概念和构造方法,以两段三次Bézier曲线的拼接为例,从满足
连续条件出发,给出了一组比例约束条件,使得在该约束条件下两段曲线在公共点处满足
连续条件,基于此方法构造出来的
连续组合3次Bézier曲线即为Gamma样条。Gamma样条揭示了
连续样条曲线和B样条曲线的本质联系。1988年,法林 [11] 在Boehm的基础上又给出了满足一定的比例关系,则两三次Bézier曲线段在公共连接点处就是
的。1994年,Sarfraz [12] 采用了一种方法为三次样条曲线构造了B样条曲线的基,并作为一种特殊情况,还可以恢复Gamma样条方法。2011年,Xu [13] 等人提出了一种构造
连续的有理Gamma样条曲线的方法,此方法可以插值给定的一组平面或者空间中不同的有序数据点。
基于以上研究,本文在Boehm的基础上,结合四元数理论,将3维欧式空间
中Gamma样条曲线推广到3维球面
中,构造了Gamma四元数样条曲线,并对其在连接点处的一阶导与二阶导进行了研究。新生成的曲线直接由给定的辅助控制顶点以及形状参数来计算控制顶点,无需求解线性方程组,提高了运算效率。
2. 预备知识
2.1. 四元数
四元数可看作是复数的扩展,其是由1个实数加上3个复数组合而成,通常可以表示为
(或者
),
其中
,
是三个虚单位,满足
,
,
,
。
给定两个四元数
,
,令
,
,则相应的运算法则如下 [8]:
四元数的加减定义为
。
四元数的乘法定义为
四元数的共轭定义为
。
四元数的逆定义为
。
给定单位四元数
,显然
,令
,
,
那么就得到了单位四元数的一种表示方法 [3]
,
并且
。
对于单位四元数
,其中
,
,称映射
:
为对数映射 [3],显然
。 (1)
称对数映射的逆映射
:
为指数映射。特别的
。
给定两个单位四元数
和
,连接
和
的测地线具有恒定的切速度
,测地线方程为 [4]
。
引理1 [3] 测地线
的一阶导为
。
特别的,当
和
时分别有
,
。
2.2. Bézier四元数曲线
对于
,用Bernstein基
表示的n阶Bézier曲线如下:
,
其中
是控制点。对于以基形式给出的Bézier曲线,可以将上式转化为累加形式
,
其中
为累加基函数。特别的
。
引理2对于
,累加基函数
满足:
对于单位四元数
,利用四元数曲线的构造方法,Kim定义了n次Bézier四元数曲线 [12]
,
其中
。
2.3. Gamma样条曲线
Boehm利用简单的比例仿射概念,直接从一个辅助控制多边形构造出了
连续的三次样条曲线,即Gamma样条曲线 [10]。
对于正整数l,给定一组辅助控制顶点
,一个节点分割
,一组形状参数
,令
,一条Gamma样条曲线由l段三次Bézier曲线构成。对于
,每段曲线的内控制顶点定义为 [10]:
对于
,首末控制顶点定义为 [10]:
特别的,样条曲线的首段控制顶点定义为:
末段控制顶点定义为:
实际上,Gamma样条曲线对于整体参数是
连续的 [14]。特别的,当
时,Gamma样条曲线就退化成了
三次样条曲线。
3. Gamma四元数样条曲线
3.1. Gamma四元数样条曲线的定义
受Kim [4] 的启发,我们将欧式空间
中的Gamma样条曲线推广到单位四元数上,给出了Gamma四元数样条曲线的定义。
给定一组四元数顶点
,一个均匀的节点分割
和一组形状参数
,对于
,Gamma四元数样条曲线
的第i段
定义为
,
其中
,对于
,
(2)
(3)
对于
,
(4)
特别的,对于
,
对于
,
称
为辅助控制顶点,
为控制顶点,
为Gamma四元数曲线。由于四元数在三维空间上无法显示,所以我们给出平面上的示意图,如图1所示。
![](//html.hanspub.org/file/11-2623002x110_hanspub.png?20221208081819076)
Figure 1. Control point construction diagram
图1. 控制顶点构造示意图
3.2. Gamma四元数样条曲线的性质
我们构造的Gamma四元数样条曲线保持了
中Gamma样条曲线的许多重要微分性质。本节我们要考虑Gamma四元数样条曲线的光滑性。
为了方便起见,对于
,
,令
。
引理3 对于
,
。
i)
ii)
iii)
证明:利用文献4中的结论可得
将
和
分别代入,即可证明引理。
3.2.1. Gamma四元数样条曲线的一阶连续性
定理1 Gamma四元数样条曲线
对于整体参数u是
连续的。
证明:由Gamma四元数曲线的定义及引理3(i)可知,
即曲线是
连续的。
对
求一阶导得
。
由引理2及引理3(i)(ii)可知
,
。
由控制顶点的定义及式(1)得
,
。
由此即可证明定理。
3.2.2. Gamma四元数样条曲线的二阶连续性
二阶导数的不连续性,可能会导致物体最后的旋转结果与期望不符。因此,如何构造具有高阶连续的四元数样条曲线在计算机动画中非常重要。所以在本节中我们给出了Gamma四元数样条曲线
连续的充要条件。
对
求二阶导得
由引理2及引理3可知
,
。
由引理1,
可以转化为
。
由此可得曲线的首末二阶导矢。
定理2 Gamma四元数样条曲线
对于整体参数u是
连续的充要条件
(5)
证明:首先证明必要性。由式(2) (3),可将式(5)转化为
。
由引理1,上式可改写为
。
等式两边同乘
,整理可得
。
上式两边加
,由定义即可证明
。
其次证明充分性。令
。由式(4)及定义可将等式转化为
,
由式(1)~(3)经过计算,即可证明等式(5)。
4. 实验
在本节中,我们数值上实现了上述构造Gamma四元数样条曲线的方法。
例1 随机给定球面
上6个辅助控制顶点
令形状参数
,
,利用本文方法,即可构造出由三段曲线组成的Gamma四元数样条曲线。
基于四元数与旋转变换的关系 [15],我们将本文的构造方法应用于刚体旋转运动,其刚体中心点的旋转运动轨迹如图2所示。
![](//html.hanspub.org/file/11-2623002x159_hanspub.png?20221208081819076)
Figure 2. Rotation trajectory of rigid body center point
图2. 刚体中心点旋转运动轨迹
例2 给定球面
上5个辅助控制顶点
令形状参数
,利用本文的方法,即可计算出Gamma四元数样条曲线的所有控制顶点
通过验证可知这些控制顶点满足式(5),因此样条曲线是
连续的。相应的,我们得到刚体中心点的旋转运动轨迹,如图3所示。
![](//html.hanspub.org/file/11-2623002x166_hanspub.png?20221208081819076)
Figure 3. Rotation trajectory of rigid body center point
图3. 刚体中心点的旋转运动轨迹
5. 结论
本文首先将Bézier四元数曲线和Boehm的Gamma样条曲线相结合,构造了Gamma四元数样条曲线,构造的四元数样条曲线不仅是
连续的,并在满足一定条件时是
连续的。本文所构造的四元数样条曲线引入了可以改变样条曲线形状的参数,使得构造的样条曲线形状的改变更具灵活性。在后续的研究中,我们将会对其高阶参数连续以及形状参数对样条曲线形状的影响等问题做进一步展开研究。
NOTES
*通讯作者。