1. 引言
计算机动画和机器人运动学中,对刚体运动曲线的设计尤为重要 [1]。刚体的位置和朝向决定其特定时刻的状态 [2]。因而只要分别设计出刚体运动的位置曲线和朝向曲线,就完成了刚体运动曲线的设计 [3] [4]。我们通常用欧拉角法、旋转矩阵表示法、变换矩阵表示法和单位四元数表示法来描述刚体的朝向 [5]。其中,四元数特别是单位四元数适用于对三维物体和虚拟摄像头的旋转控制。在旋转的表示上,由于四元数形式简单、计算效率高,而且不会出现万向节锁死现象,它在计算机动画和机器人运动学中获得了极大的关注 [6] [7] [8] [9]。因此,人们开始对单位四元数朝向曲线进行研究 [10] - [15]。但是欧氏空间中向量的运算规律并不全部适用于四元数,插值理论也不能直接运用于四元数曲线的光滑拼接问题 [16],这给姿态的平滑插值带来一定困难。
1985年Shoemake [17] 首次在计算机图形学中运用四元数,利用其对旋转的表示,将Bézier曲线的德卡斯特里奥算法转变为球面线性插值Slerp。在此基础上,KIM等人1995年 [18] 利用单位四元数的指数映射与对数映射的定义,提出了一种通过将R3中向量的加法转换为S3中四元数的乘积来构造四元数曲线的方法。利用此方法KIM等人1996年 [19] 将R3中的样条曲线(如Bézier、Hermite和B样条曲线)以基函数的和的形式表示,再转换为累积形式,从而构造出S3中的四元数曲线。这类曲线保留了R3中所对应曲线的许多重要的微分性质,具有高阶导矢,但文中只对其性质进行了简单的研究,计算出了四元数曲线的一阶导矢,并未涉及其更高阶的导矢数与参数连续性。通过选择适当的多项式调配函数,邢燕等人2017年 [20] 构造了一类基于四次多项式的C2连续的单位四元数插值样条曲线。为了提高插值样条曲线的平滑度,2018年 [21] 将C2提高到C3连续,构造了一类基于五次多项式的单位四元数插值样条曲线。进一步地,谭杰庆等人 [22] 构造了通过给定关键帧姿态序列的平滑方向曲线,并证明了其C2连续性。该曲线基于参数五次多项式,插值于给定的数据点序列,不需要反算控制顶点。这几类通过改变基函数所构造的改曲线具有较好的插值性与连续性,且运算速度快,但随着对曲线参数连续性要求的提高,其基函数调配过程的复杂程度也随之加深。
本文旨在寻求一种简洁有效的方法,通过对Bézier四元数曲线的性质进行研究,计算其端点处的一阶、二阶导矢,由此解决了曲线的光滑拼接问题,来构造出具有C2连续性的四元数插值样条曲线,精确地插值于给定的单位四元数序列,无需求解非线性方程组,并且能进行Hermite插值。
2. 预备知识
一个单位四元数
,其中
,令
我们得到单位四元数的另一种表示方法
。
两个单位四元数
,
,它们的乘积定义为:
单位四元数的逆定义为
。
单位四元数
将欧氏空间中的点
由以下关系:
映射到
,其几何意义是将
绕轴
旋转
个角度得到
。
给定向量
,其中
,
,由指数映射
将v映射到单位四元数q。
对数映射
将单位四元数q映射到三维球面上的点v。显然,
(1)
结合单位四元数的几何意义,单位四元数的实值指数
次幂定义为
。
给定两个单位四元数
和
,连接
和
的测地线具有恒定的切向速度
,测地线方程
(2)
也被称为
和
之间的slerp插值。
基于KIM [17] [18] 的工作,我们给出如下引理。
引理1:
(3)
KIM2等人在对Bézier四元数曲线的研究中,首先将Bernstein基函数
,
转换为累加形式
在此基础上,运用slerp插值给出了具有初始控制顶点
的n次Bézier四元数曲线的定义:
(4)
其中,
。最后,对3次Bézier四元数曲线的性质进行了研究。
3. Bézier四元数曲线的性质
为了讨论Bézier四元数曲线在端点处的性质,我们给出下面的引理。
引理2:对于
,Bernstein基函数累加形式
满足
1)
2)
3)
证明:对Bernstein基函数求导得
注意到
,于是有
求出Bernstein基函数累加形式的一阶导
后,再对
求导,就可以计算出Bernstein基函数累加形式的二阶导
由此,即可证明引理。
为方便起见,对于
,令
(5)
我们将Bézier四元数曲线的定义式(4)改写成
(6)
引理3:对于
,
满足
1)
2)
3)
证明:对于
,将(5)式两端分别对参数t求导
(7)
由引理2即可证明。
下面,我们对Bézier四元数曲线在端点处的性质进行讨论。为此,不妨假设
由引理3,可以直接得到如下结论:
定理1:Bézier四元数曲线
在端点处插值首末控制顶点,即
对于曲线
在端点处的一阶导矢,我们有如下结论。
定理2:Bézier四元数曲线
在端点处的一阶导矢为
证明:对于
,将Bézier四元数曲线的定义式(6)两端分别对参数t求导,则
(8)
由引理3得
由此即可证明定理。
进一步地,对于Bézier四元数曲线的二阶导矢,我们给出如下结论:
定理3:Bézier四元数曲线
在端点处的二阶导矢为
证明:对于
,令
,其中,
(9)
(10)
(11)
显然,
并且,
(12)
进一步地,将(9) (10) (11)三式两端分别对参数t求导
(13)
(14)
(15)
将(13)~(15)式分别代到(12)式,
于是得到n次Bézier四元数曲线的二阶导矢
。
由引理3可知,
当
时,
当
时,
特别地,由引理1可知,
由此即可证明定理。
4. Bézier四元数曲线的光滑拼接
本节我们要考虑Bézier四元数曲线的光滑拼接问题。对于整数
,给定两组三维单位球面S3上
个互不相同的单位四元数
,
,它们分别确定两条n次Bézier四元数曲线
。则问题转化为控制顶点的选取,使得曲线
和
是C2光滑拼接的。
根据定理1可知,Bézier四元数曲线具有端点插值性,因此,Bézier四元数曲线
和
C0光滑拼接时,下式成立
(16)
两曲线C2光滑拼接的充要条件是它们在其公共连接点处具有相同的二阶导矢。由此给出以下两个结论。
定理4:两条n次Bézier四元数曲线
和
在其公共连接点处是C1光滑拼接的,则(16)式以及下式
(17)
成立。
证明:Bézier四元数曲线
和
在其公共连接点处C1光滑拼接,当且仅当
根据定理2,
再由(16)式,
即可证明定理。
定理5:两条n次Bézier四元数曲线
和
在其公共连接点处是C2光滑拼接的,则(16) (17)式以及下式
(18)
成立。
证明:Bézier四元数曲线
和
在其公共连接点处C2光滑拼接,当且仅当
根据定理3,
利用(16)(17)式,可将上式化简为
即可证明定理。
运用以上结论,我们可以解决两条Bézier四元数曲线的光滑拼接问题。
5. 数值实验
在实际问题中,往往是给出三维球面S3上的一组数据点
,
,要求我们构造一条三次Bézier四元数样条曲线
,具有C2连续性,且光滑插值于这些点。
对于
,记连接
和
的三次Bézier四元数曲线段为
,
,令
设第i段三次Bézier四元数曲线
的控制顶点为
。则由定理1可知,
插值于数据点
。由此,问题转化为曲线段
和
在数据点
处的C2光滑拼接问题。将
的控制顶点分别代入(17)(18)式,我们可以依次计算出曲线段
的中间控制顶点:
(19)
(20)
其中,
,
。
由定理5可知,样条曲线
是C2连续的。
例:表1为一组刚体旋转运动的插值数据,给出了刚体运动的4个时间点的旋转角与旋转轴。
Table 1. Interpolation data of rigid body rotational motion
表1. 刚体旋转运动的插值数据
运用四元数和旋转角与旋转轴的关系,可分别求出每组数据对应的单位四元数,即
假设连接
和
的曲线段
的中间控制顶点为
由(19) (20)式,我们可以得到曲线段
的控制顶点
以及曲线段
的控制顶点
由此构造出一条C2连续的三次Bézier四元数样条曲线
光滑插值于
,进而得到相应的刚体旋转运动插值于给定的数据。假设刚体的平移运动为直线运动,则我们得到图1所示的该运动的等时间离散表示,其中,黄色立方体表示运动的插值位置。
Figure 1. Schematic diagram of rigid body motion
图1. 刚体运动示意图
6. 结论
本文首先对Bézier四元数曲线的性质进行研究,计算其端点处的一阶、二阶导矢,由此解决了曲线的光滑拼接问题,进而给出了一种构造C2连续的四元数样条曲线的方法。本文方法所构造的样条曲线精确插值给定的数据点序列,不需要迭代算法求解非线性方程组,还能进行Hermite插值。在后续的研究中,我们将会对具有高阶参数连续性的样条曲线的构造等问题进一步展开研究。