Print

发布时间: 2018-04-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.170098
2018 | Volume 23 | Number 4




    图像理解和计算机视觉    




  <<上一篇 




  下一篇>> 





${C^3}$连续的单位四元数插值样条曲线
expand article info 邢燕, 白龙, 樊文, 檀结庆
合肥工业大学数学学院, 合肥 230009

摘要

目的 构造一类${C^3}$连续的单位四元数插值样条曲线,证明它的插值性和连续性,并把它应用于刚体关键帧动画设计中。方法 利用${{\bf{R}}^3}$空间中插值样条曲线的5次多项式调配函数的累和形式构造了${S^3}$空间中单位四元数插值样条曲线,它不仅能精确通过一系列给定的方向,而且能生成${C^3}$连续的朝向曲线。结果 与Nielson的单位四元数均匀B样条插值曲线的迭代构造方法相比,所提方法避免了为获取四元数B样条曲线控制顶点对非线性方程组迭代求解的过程,提高了运算效率;与单位四元数代数三角混合插值样条曲线的构造方法(Su方法)相比,所提方法只用到多项式基,运算速度更快。本例中创建关键帧动画所需的时间与Nielson方法和Su方法相比平均下降了73%和33%。而且,相比前两种方法,所提方法产生的四元数曲线连续性更高,由${C^2}$连续提高到${C^3}$连续,这意味着动画中刚体的朝向变化更加自然。结论 仿真结果表明,本文方法对刚体关键帧动画设计是有效的,对实时性和流畅性要求高的动画设计场合尤为适用。

关键词

单位四元数; 朝向; 样条; C3连续性; 插值; 关键帧动画

Construction and application of a ${C^3}$-continuous unit quaternion interpolation spline curve
expand article info Xing Yan, Bai Long, Fan Wen, Tan Jieqing
School of Mathematics, Hefei University of Technology, Hefei 230009, China
Supported by: National Natural Science Foundation of China (61472466, 11601115)

Abstract

Objective Unit quaternion represents rotation more compactly and intuitively than rotation matrix and is superior to Euler angle parameterization in avoiding gimbal lock. This study constructs a class of ${C^3}$-continuous unit quaternion interpolation spline curves. The curves in unit quaternion space are an extension of a class of quintic polynomial interpolation spline curves in Euclidean space. They maintain high continuity and interpolating properties and are suitable for controlling the orientation of a rigid body in keyframe animation. Method Rigid keyframe animation usually has two or more keyframes (nodes) to be connected, and the rigid body needs to pass through the keyframes accurately. When the second derivatives of the orientation curve are discontinuous at some nodes in the spline curve, the angular acceleration of the object will suffer from a large jump, thereby resulting in undesirable rotation effects that are inconsistent with the expectation. Therefore, how to construct a high-order continuous unit quaternion curve is important in computer animation. This study first gives the definition and properties of quaternions and then selects proper quintic polynomial-blending functions to achieve a smooth interpolating orientation curve. Interpolation spline curves are constructed in ${\mathit{\boldsymbol{R}}^3}$ space by taking such quintic polynomial-blending functions as the base functions. The constructed curves can pass through the given data points and are ${C^3}$-continuous when the knot vector is evenly distributed. We extend the spline curve in ${\mathit{\boldsymbol{R}}^3}$ space into ${S^3}$ space. Therefore, the unit quaternion interpolation spline curve maintains many similar important properties to those of the quintic polynomial interpolation spline curve in Euclidean space, such as interpolation and high-order continuity. Inspired by Kim et al.[5], we take the cumulative forms of the constructed blending functions of the interpolation spline curves in Euclidean space as the base functions to construct unit quaternion interpolation spline curves in ${S^3}$ space. Specifically, the unit quaternion interpolation spline curve is the product of several exponential functions, in which the exponents are cumulative forms of the blending functions, and the bases are constant unit quaternions that are the given keyframe orientations and the angular velocities between every two adjacent given keyframe orientations. Using this ability, the produced unit quaternion curves behave similarly to the spline curves in Euclidean space. For example, they not only pass through a given sequence of orientations (denoted by unit quaternions) exactly without the iterative process in solving the quaternionic nonlinear system of equations, as used in the classical B-spline unit quaternion interpolatory curves to obtain the control points from given data points but also can possess ${C^3}$ continuity. A strict proof of these properties is given. An application example is provided to show that the constructed unit quaternion curve can play a role in the keyframe animation design. Result We provide a 3D keyframe interpolation animation instance and comparison experiments to illustrate the feasibility and effectiveness of the proposed unit quaternion orientation curve construction method. From the application example, we observe that the proposed curve automatically passes through a given sequence of keyframe orientation accurately. The postures of cherries are controlled by the unit quaternion curve. Red cherries are randomly given keyframes. The orientations of intermediate green cherries are determined by three different types of unit quaternion spline curves. The position curve of the cherries adopts the same cubic uniform B-spline curves. Unlike Nielson's iterative construction scheme of unit quaternion uniform B-spline interpolation curves, the proposed scheme avoids solving the nonlinear system of equations over quaternions to obtain the control points, which greatly improves computational efficiency. Unlike Su et al.'s algebraic trigonometric blending interpolation quaternion spline curves, our scheme only uses polynomial bases, which run faster than trigonometric functions. The time required for the animation example by using our scheme decreases by approximately 73% and 33% compared with those by Nielson's and Su et al.'s method, respectively. Moreover, the continuity of the curve produced by the proposed scheme is ${C^3}$, higher than the ${C^2}$-continuous curves constructed by the other two methods, which means that the changes in the orientation of the rigid body in the animation will be more natural. Conclusion Simulation results demonstrate that the proposed method is effective for rigid-body keyframe animation design and particularly applicable for design occasions with high real-time and fluency demands. Although the proposed method has the advantages of automatically accurate interpolation, high continuity, and fast running, this paper does not discuss the fairness of the curve. From numerous experimental results, we deduce that the curve fairness produced by the proposed method is not as good as the fairness of unit quaternion uniform B-spline curves. The next step of our work will be to study the construction method of a quaternion interpolating spline curve from the aspect of energy optimization, such as minimizing torque energy or curvature.

Key words

unit quaternion; orientation; spline; C3-continuity; interpolation; key frame animation

0 引言

朝向的插值研究是计算机动画、机器人控制和飞行器导航中一个重要的问题。常见的朝向表示方法有欧拉角法、正交矩阵表示法和单位四元数表示法。由于四元数在旋转表示上形式简洁、计算高效,而且避免了万向节锁现象,因此,单位四元数朝向曲线的设计和研究引起了大批学者的关注[1-14]

19世纪40年代爱尔兰数学家Hamilton最先提出四元数的概念。1985年Shoemake[1]首次把四元数引入到计算机图形学中,利用单位四元数对旋转的表示,借助球面线性插值(Slerp)公式,构造了${C^1}$连续的单位四元数Bézier曲线。Schlag[2]采用递归的几何方法构造了单位四元数曲线,但是不能保证${C^2}$连续性。Nielson等人[3-4]提出的单位四元数B样条曲线同样不具有${C^2}$连续性。由于二阶导数的不连续性,物体在样条曲线的一些节点处角加速度可能发生较大的跳跃,造成与期望不符的旋转效果。因此,如何构造具有高阶连续的单位四元数曲线在计算机动画中非常重要。

${{\bf{R}}^3}$空间有许多成熟的样条曲线构造方法。不幸地是,${{\bf{R}}^3}$空间中具有${C^k}$连续性的样条曲线不能平移到单位四元数空间${S^3} = \{ \mathit{\boldsymbol{q}}:\mathit{\boldsymbol{q}} \in {{\bf{R}}^4}, \left\| q \right\| = 1\} $中。Kim等人[5]提出单位四元数曲线的一般代数构造方法,这类曲线可以方便地求出导数。Kim等人[6]对这类曲线中的${C^2}$连续的单位四元数B样条曲线提出一种迭代算法,计算其控制项点,使之能够插值一系列给定的方向。Nielson[7]提出的单位四元数$\nu $样条曲线,同样需要使用迭代算法解非线性方程组获得样条的控制点,从而插值一系列给定的数据点。Su等人[8]采用代数三角混合插值样条构造了一种单位四元数样条曲线,无需求解非线性方程组即能插值给定的数据点,但是该曲线仅仅具有${C^2}$连续性。

本文提出一种基于5次多项式的单位四元数插值样条曲线构造方法,这类单位四元数曲线不但能够精确地插值任意给定的数据点序列,而且在等距节点下能够达到${C^3}$连续性。

1 四元数的定义和运算

$\mathit{\boldsymbol{q}} = a + b{\rm{i}} + c{\rm{j}} + d{\rm{k}}$为一个四元数,其中$\mathit{a, b, c, d} \in {\bf{R}}$, i, j, k是不同的虚数单位,满足${{\rm{i}}^2}$=${{\rm{j}}^2}$=${{\rm{k}}^2}$=-1, ij=-ji=k, jk=-kj=i, ki=-ik=j。四元数也可以表示成($a, \mathit{\boldsymbol{v}}$)或($a$, $b$, $c$, $d$),其中$a$是标量,$\mathit{\boldsymbol{v = }}{\rm{(}}\mathit{b, c, d}{\rm{)}}$是3维向量。

给定四元数$\mathit{\boldsymbol{q = }}{\rm{(}}\mathit{a, b, c, d}{\rm{)}}$, ${\mathit{\boldsymbol{q}}_i}\mathit{\boldsymbol{ = }}{\rm{(}}{\mathit{a}_i}\mathit{, }{\mathit{b}_i}\mathit{, }{\mathit{c}_i}\mathit{, }{\mathit{d}_i}{\rm{)}}$,四元数定义了如下运算:

加减:${\mathit{\boldsymbol{q}}_1} \pm {\mathit{\boldsymbol{q}}_2} = ({\mathit{a}_1} \pm {\mathit{a}_2}, {\mathit{b}_1} \pm {\mathit{b}_2}, {\mathit{c}_1} \pm {\mathit{c}_2}, {\mathit{d}_1} \pm {\mathit{d}_2})$

点乘:${\mathit{\boldsymbol{q}}_1} \cdot {\mathit{\boldsymbol{q}}_2} = {\mathit{a}_1}{\mathit{a}_2} + {\mathit{b}_1}{\mathit{b}_2} + {\mathit{c}_1}{\mathit{c}_2} + {\mathit{d}_1}{\mathit{d}_2}$

$ \begin{array}{l} 乘法:{\mathit{\boldsymbol{q}}_1}{\mathit{\boldsymbol{q}}_2} = \left( {{a_1}{a_2} - {b_1}{b_2} - {c_1}{c_2} - {d_1}{d_2}} \right) + \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\left( {{a_1}{b_2} - {b_1}{a_2} - {c_1}{d_2} - {d_1}{c_2}} \right){\rm{i}} + \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\left( {{a_1}{c_2} + {c_1}{a_2} + {d_1}{b_2} - {b_1}{d_2}} \right){\rm{j}} + \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\left( {{a_1}{d_2} + {d_1}{a_2} + {b_1}{c_2} - {c_1}{b_2}} \right){\rm{k}} \end{array} $

注:四元数的乘法不满足交换律。

共轭:$\mathit{\boldsymbol{\bar q = }}\mathit{a-b}\;{\rm{i-}}\mathit{c}\;{\rm{j-}}\mathit{d}{\rm{k}}$

注:两个四元数$p$,$q$乘积的共轭满足性质$\overline {\mathit{\boldsymbol{pq}}} = \mathit{\boldsymbol{\bar q\bar p}}$

模:$\left\| \mathit{\boldsymbol{q}} \right\| = \sqrt {{a^2} + {b^2} + {c^2} + {d^2}} = \sqrt {\overline {\mathit{\boldsymbol{qq}}} } $

$\left\| \mathit{\boldsymbol{q}} \right\| = 1$,则称$\mathit{\boldsymbol{q}}$是单位四元数。

逆:${\mathit{\boldsymbol{q}}^{-1}} = \frac{{\mathit{\boldsymbol{\bar q}}}}{{{{\left\| \mathit{\boldsymbol{q}} \right\|}^2}}}$

单位四元数$q$有三角形式及指数形式

$ \mathit{\boldsymbol{q}} = \cos \left( \theta \right) + \mathit{\boldsymbol{n}}\sin \left( \theta \right) = \exp \left( {\theta \mathit{\boldsymbol{n}}} \right) $

式中,$\mathit{\boldsymbol{n}} \in {S^2}$为单位向量。

单位四元数$\mathit{\boldsymbol{q = }}{\rm{cos(}}\theta {\rm{) + }}\mathit{\boldsymbol{n}}{\rm{sin(}}\theta {\rm{)}}$的对数运算, 即

$ \ln \left( \mathit{\boldsymbol{q}} \right) = \theta \mathit{\boldsymbol{n}} $

单位四元数$\mathit{\boldsymbol{q}}$的幂:${\mathit{\boldsymbol{q}}^t} = \exp (\mathit{t} \cdot {\rm{ln(}}\mathit{\boldsymbol{q}}{\rm{)}}), \mathit{t} \in {\bf{R}}$

单数四元数$\mathit{\boldsymbol{q}}$为底的指数函数${\mathit{\boldsymbol{q}}^{f(\mathit{t})}}$关于$t \in {\bf{R}}$的导数:$\frac{{\rm{d}}}{{{\rm{d}}\mathit{t}}}{\mathit{\boldsymbol{q}}^{f(\mathit{t})}} = f'(\mathit{t}){\mathit{\boldsymbol{q}}^{f(\mathit{t})}}\ln (\mathit{\boldsymbol{q}})$

特别地,当$\mathit{f}{\rm{(}}\mathit{t}{\rm{) = }}\mathit{t}$, 有$\frac{{\rm{d}}}{{{\rm{d}}\mathit{t}}}{\mathit{\boldsymbol{q}}^t} = {\mathit{\boldsymbol{q}}^t}\ln (\mathit{\boldsymbol{q}})$

球面线性插值公式:$Slerp({\mathit{\boldsymbol{q}}_0}, {\mathit{\boldsymbol{q}}_1};\mathit{t}) = {\mathit{\boldsymbol{q}}_0}{(\mathit{\boldsymbol{q}}_0^{-1}{\mathit{\boldsymbol{q}}_1})^t}$,或$Slerp({\mathit{\boldsymbol{q}}_0}, {\mathit{\boldsymbol{q}}_1};\mathit{t}) = \frac{{\sin (1-\mathit{t})\alpha }}{{\sin \alpha }}{\mathit{\boldsymbol{q}}_0} + \frac{{\sin t\alpha }}{{\sin \alpha }}{\mathit{\boldsymbol{q}}_1}$,其中${\mathit{\boldsymbol{q}}_0}, {\mathit{\boldsymbol{q}}_1}$是两个单位四元数,$t \in [0,1]$$\alpha $满足$\cos (\alpha ) = {\mathit{\boldsymbol{q}}_0} \cdot {\mathit{\boldsymbol{q}}_1}$

2 ${C^3}$连续的单位四元数插值样条曲线

2.1 5次多项式插值样条曲线

受文献[15]的启发,设计以下的5次多项式调配函数。

定义1  对于$t$∈[0, 1],称关于$t$的5次多项式

$ \left\{ \begin{array}{l} {B_0}\left( t \right) = - \frac{5}{{16}}t{\left( {1 - t} \right)^4}\\ {B_1}\left( t \right) = \frac{1}{{16}}\left( {16 - 40{t^2} + 45{t^4} - 21{t^5}} \right)\\ {B_{\bf{2}}}\left( t \right) = \frac{1}{{16}}\left[\begin{array}{l} 16-40{\left( {1-t} \right)^2} + \\ 45{\left( {1-t} \right)^4} - 21{\left( {1 - t} \right)^5} \end{array} \right]\\ {B_3}\left( t \right) = - \frac{5}{{16}}{t^4}\left( {1 - t} \right) \end{array} \right. $ (1)

为插值样条的调配函数。

图 1为定义1中调配函数的图像。

图 1 ${\mathit{B}_i}(t)(\mathit{i = }{\rm{0, 1, 2, 3;}}\mathit{t} \in {\rm{[0, 1]}})$的图像
Fig. 1 The graphs of ${\mathit{B}_i}(t)(\mathit{i = }{\rm{0, 1, 2, 3;}}\mathit{t} \in {\rm{[0, 1]}})$

定义2  给定数据点${\mathit{p}_k} \in {{\bf{R}}^d}, d = 2, 3;k = 1, \cdots, n$${p_0} = {p_1}, {p_{n + 1}} = {p_n}$,称

$ P\left( t \right) = \bigcup\limits_{i = 1}^{n - 1} {{P_i}\left( t \right)}, t \in \left[{0, 1} \right] $ (2)

为5次多项式插值样条曲线,其中

$ \begin{array}{*{20}{c}} {{P_i}\left( t \right) = \sum\limits_{j = 0}^3 {{B_j}\left( t \right){p_{i + j - 1}}} }\\ {i = 1, 2, \cdots, n - 1} \end{array} $ (3)

为第$i$段5次多项式插值样条曲线。

定理1  给定控制点集${\mathit{p}_k} \in {{\bf{R}}^d}, d = 2, 3;k = 1, \cdots, n$,令${p_0} = {p_1}, {p_{n + 1}} = {p_n}$,定义2中的5次多项式插值样条曲线$P(t)$在等距节点下是${C^3}$连续的。

证明:通过对式(3)直接计算可得

$ {P_i}\left( 0 \right) = {p_i} $

$ {P_i}\left( 1 \right) = {p_{i + 1}} $

$ {{P'}_i}\left( 0 \right) = \frac{5}{{16}}\left( {{p_{i + 1}} - {p_{i - 1}}} \right) $

$ {{P'}_i}\left( 1 \right) = \frac{5}{{16}}\left( {{p_{i + 2}} - {p_i}} \right) $

$ {{P''}_i}\left( 0 \right) = \frac{5}{2}\left( {{p_{i - 1}} - 2{p_i} + {p_{i + 1}}} \right) $

$ {{P''}_i}\left( 1 \right) = \frac{5}{2}\left( {{p_i} - 2{p_{i + 1}} + {p_{i + 2}}} \right) $

$ {{P'''}_i}\left( 0 \right) = \frac{{45}}{4}\left( {{p_{i + 1}} - {p_{i - 1}}} \right) $

$ {{P'''}_i}\left( 1 \right) = \frac{{45}}{4}\left( {{p_{i + 2}} - {p_i}} \right) $

因此,$P_{i + 1}^{(\mathit{k})}(0) = \mathit{P}_i^{(\mathit{k})}(1), \mathit{k = }{\rm{0, 1, 2, 3;}}\mathit{i = }{\rm{1, 2, }} \cdots {\rm{, }}\mathit{n}{\rm{-2}}$

曲线$P(t)$中各曲线段均定义在局部参数$t$∈[0, 1]上.若整条曲线定义在统一的连续参变量区间上, 且结点向量均匀分布, 那么任意2条相邻曲线段在连接点处的0、1、2、3阶导数值仍然相等.

所以曲线$P(t)$在等距节点下是${C^3}$连续的。

2.2 基于5次多项式的单位四元数插值样条曲线的构造及连续性

定义3  给定$n$个关键帧方向${\mathit{\boldsymbol{q}}_k} \in {S^3}(\mathit{k = }{\rm{1, }} \cdots {\rm{, }}\mathit{n})$,令${\mathit{\boldsymbol{q}}_0} = {\mathit{\boldsymbol{q}}_1}, {\mathit{\boldsymbol{q}}_1}, {\mathit{\boldsymbol{q}}_{n + 1}} = {\mathit{\boldsymbol{q}}_n}$,称

$ Q\left( t \right) = \bigcup\limits_{i = 1}^{n - 1} {{Q_i}\left( t \right)}, t \in \left[{0, 1} \right] $ (4)

为基于5次多项式的单位四元数插值样条曲线,其中

$ \begin{array}{*{20}{c}} {{Q_i}\left( t \right) = \mathit{\boldsymbol{q}}_{i - 1}^{{{\tilde B}_0}\left( t \right)}\prod\limits_{j = 1}^3 {{{\left( {\mathit{\boldsymbol{q}}_{i + j - 2}^{ - 1}{\mathit{\boldsymbol{q}}_{i + j - 1}}} \right)}^{{{\tilde B}_j}\left( t \right)}}} }\\ {i = 1, 2, \cdots, n - 1} \end{array} $ (5)

为第$i$段单位四元数插值样条曲线,其中

$ \begin{array}{*{20}{c}} {{{\tilde B}_j}\left( t \right) = \sum\limits_{i = j}^3 {{B_i}\left( t \right)} }\\ {j = 0, 1, 2, 3;t \in \left[{0, 1} \right]} \end{array} $ (6)

图 2为定义3中累和形式的调配函数的图像。

图 2 ${{\tilde B}_i}(t)(\mathit{i = }{\rm{0, 1, 2, 3;}}\mathit{t} \in {\rm{[0, 1]}})$的图像
Fig. 2 The graphs of ${{\tilde B}_i}(t)(\mathit{i = }{\rm{0, 1, 2, 3;}}\mathit{t} \in {\rm{[0, 1]}})$

这样定义的单位四元数插值样条曲线保持了5次多项式插值样条曲线许多重要的性质,如插值性和${C^3}$连续性。

定理2  给定方向序列$\{ {\mathit{\boldsymbol{q}}_k}:\mathit{k = }{\rm{1, }} \cdots {\rm{, }}\mathit{n}\} $,令${\mathit{\boldsymbol{q}}_0} = {\mathit{\boldsymbol{q}}_1},{\mathit{\boldsymbol{q}}_{n + 1}} = {\mathit{\boldsymbol{q}}_n}$,则由式(4)—式(6)定义的基于5次多项式的单位四元数样条曲线是插值数据点$\{ {\mathit{\boldsymbol{q}}_k}\} $的,并且在等距节点下是${C^3}$连续的。

证明:由式(1)和式(6),不难求得

$ {{\tilde B}_0}\left( t \right) \equiv 1, \;\;\;\;{{\tilde B}_1}\left( 0 \right) = 1, \;\;\;\;\;{{\tilde B}_2}\left( 0 \right) = 0, \;\;\;\;{{\tilde B}_3}\left( 0 \right) = 0, $

$ {{\tilde B}_1}\left( 1 \right) = 1, \;\;\;\;{{\tilde B}_2}\left( 1 \right) = 1, \;\;\;\;\;{{\tilde B}_3}\left( 1 \right) = 0, $

$ \tilde B_0^{\left( k \right)}\left( t \right) \equiv 0, \;\;\;\;{{\tilde B'}_1}\left( 0 \right) = \frac{5}{{16}}, \;\;\;{{\tilde B'}_2}\left( 0 \right) = \frac{5}{{16}}, $

$ {{\tilde B'}_3}\left( 0 \right) = 0, \;\;\;\;\left( {k \ge 1} \right)\;\;\;\;\;{{\tilde B'}_1}\left( 1 \right) = 0, $

$ {{\tilde B'}_2}\left( 1 \right) = \frac{5}{{16}}, \;\;\;\;{{\tilde B'}_3}\left( 1 \right) = \frac{5}{{16}}, \;\;\;\;{{\tilde B''}_1}\left( 0 \right) = - \frac{5}{2}, $

$ {{\tilde B''}_2}\left( 0 \right) = \frac{5}{2}, \;\;\;\;{{\tilde B''}_3}\left( 0 \right) = 0, \;\;\;\;{{\tilde B''}_1}\left( 1 \right) = 0, $

$ {{\tilde B''}_2}\left( 1 \right) = - \frac{5}{2}, \;\;\;\;{{\tilde B''}_3}\left( 1 \right) = \frac{5}{2}, \;\;\;\;{{\tilde B'''}_1}\left( 0 \right) = \frac{{45}}{4}, $

$ {{\tilde B'''}_2}\left( 0 \right) = \frac{{45}}{4}, \;\;\;\;\;{{\tilde B'''}_3}\left( 0 \right) = 0, \;\;\;\;{{\tilde B'''}_1}\left( 1 \right) = 0, $

$ {{\tilde B'''}_2}\left( 1 \right) = \frac{{45}}{4}, \;\;\;\;{{\tilde B'''}_3}\left( 1 \right) = \frac{{45}}{4}。$

式(5)等价于

$ \begin{array}{*{20}{c}} {{Q_i}\left( t \right) = {\mathit{\boldsymbol{q}}_{i - 1}}{{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}{{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}}\\ {{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}} \end{array} $ (7)

因此${Q_i}(\mathit{0}) = {\mathit{\boldsymbol{q}}_i}, {Q_i}(1) = {\mathit{\boldsymbol{q}}_{i + 1}}$

即第$i$段曲线${Q_i}(t)$${\mathit{\boldsymbol{q}}_i}$${\mathit{\boldsymbol{q}}_{i + 1}}$两点。由此可知,该四元数样条曲线插值各型值点。

由此可得曲线的${C^0}$连续性

$ {Q_{i + 1}}\left( 0 \right) = {\mathit{\boldsymbol{q}}_{i + 1}} = {Q_i}\left( 1 \right) $ (8)

${Q_i}(t)$关于$t$的一阶导函数

$ \begin{array}{*{20}{c}} {{{Q'}_i}\left( t \right) = {\mathit{\boldsymbol{q}}_{i - 1}}{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}} \right]}^\prime }{{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}}\\ {{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}} + {\mathit{\boldsymbol{q}}_{i - 1}}{{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}{{\left[{{{\left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}} \right]}^\prime }}\\ {{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}} + {\mathit{\boldsymbol{q}}_{i - 1}}{{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}{{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}}\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}} \right]}^\prime }} \end{array} $

式中

$ \begin{array}{*{20}{c}} {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}} \right]}^\prime } = {{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}\left[{{{\left( {{{\tilde B}_1}\left( t \right)} \right)}^\prime }\ln \left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{q_i}} \right)} \right], }\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}} \right]}^\prime } = {{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}}\\ {\left[{{{\left( {{{\tilde B}_2}\left( t \right)} \right)}^\prime }\ln \left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)} \right]{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}} \right]}^\prime } = }\\ {{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}\left[{{{\left( {{{\tilde B}_3}\left( t \right)} \right)}^\prime }\ln \left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)} \right]} \end{array} $

通过计算得到

$ \begin{array}{*{20}{c}} {{{Q'}_i}\left( 0 \right) = \frac{5}{{16}}{\mathit{\boldsymbol{q}}_i}\left( {\ln \left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right) + \ln \left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)} \right)}\\ {{{Q'}_i}\left( 1 \right) = \frac{5}{{16}}{\mathit{\boldsymbol{q}}_{i + 1}}\left( {\ln \left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right) + \ln \left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)} \right)} \end{array} $

因此

$ {{Q'}_{i + 1}}\left( 0 \right) = {{Q'}_i}\left( 1 \right) $ (9)

${Q_i}(t)$关于$t$的二阶导函数

$ \begin{array}{*{20}{c}} {{{Q''}_i}\left( t \right) = {\mathit{\boldsymbol{q}}_{i - 1}}{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}} \right]}^{\prime \prime }}{{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}}\\ {{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}} + {\mathit{\boldsymbol{q}}_{i - 1}}{{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}{{\left[{{{\left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}} \right]}^{\prime \prime }}}\\ {{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}} + {\mathit{\boldsymbol{q}}_{i - 1}}{{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}{{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}}\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}} \right]}^{\prime \prime }} + 2{\mathit{\boldsymbol{q}}_{i - 1}}{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}} \right]}^\prime }}\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}} \right]}^\prime }{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}} + }\\ {2{\mathit{\boldsymbol{q}}_{i - 1}}{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}} \right]}^\prime }{{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}}\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}} \right]}^\prime } + 2{\mathit{\boldsymbol{q}}_{i - 1}}{{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}}\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}} \right]}^\prime }{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}} \right]}^\prime }, } \end{array} $

式中

$ \begin{array}{*{20}{c}} {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}} \right]}^{\prime \prime }} = {{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}{{\left( {{{\tilde B'}_1}\left( t \right)} \right)}^2}}\\ {{{\left[{\ln \left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)} \right]}^2} + {{\left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)}^{{{\tilde B}_1}\left( t \right)}}{{\tilde B''}_1}\left( t \right)\ln \left( {\mathit{\boldsymbol{q}}_{i - 1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right), }\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}} \right]}^{\prime \prime }} = {{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}{{\left( {{{\tilde B'}_2}\left( t \right)} \right)}^2}}\\ {{{\left[{\ln \left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)} \right]}^2} + {{\left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)}^{{{\tilde B}_2}\left( t \right)}}{{\tilde B''}_2}\left( t \right)\ln \left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right), }\\ {{{\left[{{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}} \right]}^{\prime \prime }} = {{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}}\\ {{{\left( {{{\tilde B'}_3}\left( t \right)} \right)}^2}{{\left[{\ln \left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)} \right]}^2} + }\\ {{{\left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)}^{{{\tilde B}_3}\left( t \right)}}{{\tilde B''}_3}\left( t \right)\ln \left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right), } \end{array} $

$ \begin{array}{l} {{Q''}_i}\left( 0 \right) = {\left( {\frac{5}{{16}}} \right)^2}{\mathit{\boldsymbol{q}}_i}\left[{{{\left( {\ln \left( {\mathit{\boldsymbol{q}}_{i-1}^{-1}{\mathit{\boldsymbol{q}}_i}} \right)} \right)}^2} + } \right.\\ \left. {2\ln \left( {\mathit{\boldsymbol{q}}_{i-1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)\ln \left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right) + {{\left( {\ln \left( {\mathit{\boldsymbol{q}}_i^{ - 1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)} \right)}^2}} \right] + \\ \frac{5}{2}{\mathit{\boldsymbol{q}}_i}\left[{\ln \left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)-\ln \left( {\mathit{\boldsymbol{q}}_{i-1}^{ - 1}{\mathit{\boldsymbol{q}}_i}} \right)} \right], \end{array} $

$ \begin{array}{l} {{Q''}_i}\left( 1 \right) = {\left( {\frac{5}{{16}}} \right)^2}{\mathit{\boldsymbol{q}}_{i + 1}}\left[{{{\left( {\ln \left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)} \right)}^2} + } \right.\\ \left. {2\ln \left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)\ln \left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right) + {{\left( {\ln \left( {\mathit{\boldsymbol{q}}_{i + 1}^{ - 1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)} \right)}^2}} \right] + \\ \frac{5}{2}{\mathit{\boldsymbol{q}}_{i + 1}}\left[{\ln \left( {\mathit{\boldsymbol{q}}_{i + 1}^{-1}{\mathit{\boldsymbol{q}}_{i + 2}}} \right)-\ln \left( {\mathit{\boldsymbol{q}}_i^{-1}{\mathit{\boldsymbol{q}}_{i + 1}}} \right)} \right]。\end{array} $

因此

$ {{Q''}_{i + 1}}\left( 0 \right) = {{Q''}_i}\left( 1 \right) $ (10)

类似地,求出${Q_i}(t)$关于$t$的三阶导函数及其在$t$=0和1处的值,可知

$ {{Q'''}_{i + 1}}\left( 0 \right) = {{Q'''}_i}\left( 1 \right) $ (11)

为书写简便,曲线$Q(t) = \mathop \cup \limits_{i = 1}^{n-1} {Q_i}(\mathit{t})$中各曲线段${Q_i}(t)$均定义在局部参数$t$∈[0, 1]上。若整条曲线定义在统一的连续参变量区间上,只要节点等距,任意2条相邻曲线段在连接点处的0、1、2、3阶导数值仍然相等.因为此时的0、1、2、3阶导数值分别是上面计算结果乘以一个系数(系数分别为相应节点间隔长度的0、1、2、3次幂的倒数)。

综合式(8)—式(11)可知$Q(t)$在等距节点下是${C^3}$连续的。

证毕。

3 实验

在这部分,我们提供3D关键帧插值动画实例和对比实验来说明本文提出的单位四元数朝向曲线构造方法的可行性和有效性。

图 3中红色樱桃是随机给定的关键帧,绿色樱桃是由3种不同方法产生的${S^3}$空间中单位四元数样条曲线做朝向曲线确定的插值帧,而樱桃的位置曲线则是采用相同的3次均匀B样条曲线。其中,图 3(a)Nielson[7]的单位四元数均匀B样条曲线作朝向曲线得到的关键帧插值动画,图 3(b)是Su等人[8]的单位四元数代数三角混合插值样条(ATBI)作朝向曲线得到的关键帧插值动画,图 3 (c)是本文方法生成的关键帧动画。部分帧用黄色线框标出,方便读者观察姿态差异。

图 3 3D动画中的关键帧插值
Fig. 3 The keyframe interpolation in 3D animation
(a)3D keyframe interpolation controlled by Nielson's ${C^2}$-continuous uniform B-spline unit quaternion curves[7]; (b) 3D keyframe interpolation controlled by Su et al.'s ${C^2}$-continuous algebraic trigonometric blending interpolation (ATBI-) unit quaternion spline curves[8]; (c) 3D keyframe interpolation controlled by the proposed ${C^3}$-continuous quintic-polynomial-based unit quaternion interpolation spline curve

正如表 1中所示,和Nielson[7]的方法比较,本文提出的方法不需要迭代求解非线性方程组获得曲线的控制顶点,从而节省了计算时间,提高了工作效率;与Su等人[8]的方法比较,虽然两者均不需要迭代求解,但是由于本文方法没有使用三角函数,使得计算时间更短;而且,本文方法产生的朝向曲线获得了比前两种方法更高一阶的连续性。

表 1 关键帧动画朝向曲线的不同生成方法比较
Table 1 The comparison of different methods for generating keyframe animation orientation curves

下载CSV
Nielson[7]单位四元数
均匀B样条曲线
Su等人[8]ATBI单位四元数
插值样条曲线
本文的单位四元数
插值样条曲线
产生图 3中关键帧动画所需的时间/s 1.332 888 0.545 585 0.362 971
插值精度 1E-6
迭代次数 39
产生的朝向曲线的连续性 ${C^2}$ ${C^2}$ ${C^3}$
注:使用“—”符号,是因为后两列方法是精确的插值方法,插值精度只受硬件影响,理论上无误差,精度无限高;后两列方法也无需迭代,1次完成。

4 结论

刚体运动动画通常有两个以上的关键帧需要连接,为了获得光滑的方向插值曲线,Shoemake[1],Schlag[2],Nielson[3-4, 7],Kim[5-6, 10],Wang[9],Ramamoorthi[11],Buss[12],Lee[13],Su[8],Xing[14]等均给出了四元数样条曲线的不同构造方法。本文提出一类基于5次多项式插值样条的单位四元数曲线构造方法,并讨论了它的插值性和连续性。与Nielson[7]的单位四元数均匀B样条曲线构造方法相比,所提的构造方法不需要迭代求解非线性方程组获得控制顶点就能插值给定的数据点,提高了动画设计效率。与Su等人[8]构造的${C^2}$连续的单位四元数代数三角混合插值样条曲线相比,我们构造的单位四元数曲线更简单、计算更快,且能达到更高阶的连续性。实验结果表明所提方法对刚体关键帧动画设计是实用的和有效的,特别对实时性和流畅性要求高的动画设计场合尤为适用。

尽管本文方法具有自动精确插值、保证${C^3}$连续性、速度快、效率高等优点,但本文没有讨论曲线的光顺性。从大量实验结果我们猜测所提方法产生的曲线光顺性不如单位四元数均匀B样条曲线。我们下一步的工作将从能量优化的角度, 研究扭矩能或曲率能最小的单位四元数插值样条曲线的构造方法。

参考文献

  • [1] Shoemake K. Animating rotation with quaternion curves[J]. ACM SIGGRAPH Computer Graphics, 1985, 19(3): 245–254. [DOI:10.1145/325165.325242]
  • [2] Schlag J. Using geometric constructions to interpolate orientation with quaternions[M]//Arvo J. Graphics Games Ⅱ. New York, NY, USA: Academic Press, 1991: 377-380. [DOI:10.1016/B978-0-08-050754-5.50081-5]
  • [3] Nielson G M, Heiland R W. Animated rotations using quaternions and splines on a 4D sphere[J]. Programming and Computer Software, 1992, 18(4): 145–154.
  • [4] Nielson G M. Smooth interpolation of orientations[M]//Thalmann N M, Thalmann D. Models and Techniques in Computer Animation. Tokyo: Springer-Verlag, 1993: 75-93. [DOI:10.1007/978-4-431-66911-1_8]
  • [5] Kim M J, Kim M S, Shin S Y. A general construction scheme for unit quaternion curves with simple high order derivatives[C]//Proceedings of the 22nd Annual Conference on Computer Graphics and Interactive Techniques. New York, USA: ACM Press, 1995: 369-376. [DOI:10.1145/218380.218486]
  • [6] Kim M J, Kim M S, Shin S Y. A C2-continuous B-spline quaternion curve interpolating a given sequence of solid orientations[C]//Proceedings of IEEE Computer Animation. Geneva, Switzerland: IEEE, 1995: 72-81. [DOI:10.1109/CA.1995.393545]
  • [7] Nielson G M. v-quaternion splines for the smooth interpolation of orientations[J]. IEEE Transactions on Visualization and Computer Graphics, 2004, 10(2): 224–229. [DOI:10.1109/TVCG.2004.1260774]
  • [8] Su B Y, Zhang J, Wang G J. The solid orientations interpolation in quaternion space using a class of blending interpolation spline[J]. International Journal of Advancements in Computing Technology, 2013, 5(6): 335–341. [DOI:10.4156/ijact]
  • [9] Wang W P, Joe B. Orientation interpolation in quaternion space using spherical biarcs[C]//Proceedings of Graphics Interface. Toronto: Canadian Human Computer Communications Society, 1993: 24-32.
  • [10] Kim M S, Nam K W. Interpolating solid orientations with circular blending quaternion curves[J]. Computer-Aided Design, 1995, 27(5): 385–398. [DOI:10.1016/0010-4485(95)96802-S]
  • [11] Ramamoorthi R, Barr A H. Fast construction of accurate quaternion splines[C]//Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques. New York, NY, USA: ACM Press/Addison-Wesley Publishing Co., 1997: 287-292. [DOI:10.1145/258734.258870]
  • [12] Buss S R, Fillmore J P. Spherical averages and applications to spherical splines and interpolation[J]. ACM Transactions on Graphics, 2001, 20(2): 95–126. [DOI:10.1145/502122.502124]
  • [13] Lee J, Shin S Y. General construction of time-domain filters for orientation data[J]. IEEE Transactions on Visualization and Computer Graphics, 2002, 8(2): 119–128. [DOI:10.1109/2945.998665]
  • [14] Xing Y, Xu R Z, Tan J Q, et al. A class of generalized B-spline quaternion curves[J]. Applied Mathematics and Computation, 2015, 271: 288–300. [DOI:10.1016/j.amc.2015.09.025]
  • [15] Xiong J, Guo Q W, Zhu G Q. May be whole or partial control of the ${C^3}$-and C4-continuous interpolation curves[J]. Journal on Numerical Methods and Computer Applications, 2011, 32(3): 165–173. [熊建, 郭清伟, 朱功勤. 可整体或局部调控的${C^3}$, C4连续的插值曲线[J]. 数值计算与计算机应用, 2011, 32(3): 165–173. ]