三维空间刚体运动4-4:四元数多点连续解析解插值方法:Spicv


序:本篇系列文章参照高翔老师《视觉SLAM十四讲从理论到实践》,讲解三维空间刚体运动,为读者打下坚实的数学基础。博文将原第三讲分为五部分来讲解,其中四元数部分较多较复杂,又分为四部分。如果读者急于实践,可直接阅读第五部分的机器人运动轨迹,此部分详细讲解了安装准备工作。此系列总体目录如下:

  1. 旋转矩阵和变换矩阵
  2. 旋转向量表示旋转
  3. 欧拉角表示旋转
  4. 四元数包括以下部分:
    4-1. 四元数表示变换
    4-2. 四元数线性插值方法:LinEuler/LinMat/Lerp/Nlerp/Slerp
    4-3. 四元数多点插值方法:Squad
    4-4. 四元数多点连续解析解插值方法:Spicv
    4-5. 四元数多点离散数值解插值方法:Sping
  5. 实践:SLAM中显示机器人运动轨迹及相机位姿

摘要:四元数插值四个方法Slerp、Squad、Spicv和Sping既复杂又很重要,为了详细阐述,故每个方法独立成一篇博文讲解。没有插值的四元数是没有灵魂的,插值的重要性不言而喻。Slerp是经典的两点间一阶连续可导插值方法,Squad方法在Slerp的基础上实现多点间的一阶连续可导,Spicv是多点间连续解析解插值方法,而Sping则是多点间离散数值解插值方法,更适合复杂曲线,此博文也是国内首篇介绍Spicv和Sping的中文资料。

1. 总述:多点旋转插值的数学方法

到目前为止,插值方法都相当简单,并且基于旋转表示。在原理上,插值方法与旋转形式无关,相反,我们所求的最优插值曲线应该根据旋转空间中所需要的特性来定义。当然,这条最优曲线需用算法编写,并可用任何合理的旋转形式表示。

比如某两个旋转间的插值:最优插值曲线等同于旋转空间中的一条直线,这条最优插值曲线可以在算法上使用欧拉角编写,也可以使用四元数形式的Slerp,而Slerp的优势是表述更简洁,因为四元数无冗余数据,而旋转空间和单位四元数球体之间的表示具有 等价性

因此,我们将基于旋转空间讨论插值问题,我们将给出基于数学的最优插值曲线的基本要求,目标是为了给出最优插值曲线算法描述,并据此找出符合条件的插值算法,并用四元数形式表示。

2. 插值曲线及其连续性

2.1 插值曲线定义

我们将旋转间的插值定义在 特殊正交群 S O ( 3 ) SO(3) SO(3)的旋转空间中,但是如前所述, S O ( 3 ) SO(3) SO(3) H 1 H_{1} H1是拓扑等价的,因此我们选择在单位四元数空间中定义一般的插值方法:

定义:对于给定的 k k k个控制点 q i ∈ H 1 q_{i} \in H_{1} qiH1和对应的集合 I = [ t 1 , . . . , t k ] I=[t_{1},...,t_{k}] I=[t1,...,tk],有插值曲线 ( γ ( t ) : I ) ∝ H 1 (\gamma(t):I)\propto H_{1} (γ(t):I)H1,对于 t i ∈ I t_{i}\in I tiI,有 γ ( t i ) ≡ q i \gamma(t_{i})\equiv q_{i} γ(ti)qi,同时要求 t 1 ≤ t 2 , . . . , t k − 1 ≤ t k t_{1}\leq t_{2},...,t_{k-1} \leq t_{k} t1t2,...,tk1tk

2.2 插值曲线连续性的讨论

我们通常希望插值曲线是“漂亮”的,这个模糊的术语在微分几何中通常意味着平滑。然而,平滑存在几种不同的定义,列举如下:

使 γ ( t ) \gamma(t) γ(t)是某曲线在 C n ( I , R n ) C^{n}(I,R^{n}) Cn(I,Rn)上的参数化表示,平滑性可被定义为下列方式:
(1)1:如果 γ ( t ) ∈ C 1 \gamma(t)\in C^{1} γ(t)C1,并且 ∀ t ∈ I : γ ′ ( t ) ≠ 0 \forall t\in I:\gamma ^{'}(t)\neq 0 tI:γ(t)=0,那么曲线 γ ( t ) \gamma(t) γ(t)是平滑的。

(2)2:如果 γ ( t ) ∈ C 2 \gamma(t)\in C^{2} γ(t)C2,那么曲线 γ ( t ) \gamma(t) γ(t)是平滑的。

(3)3:如果 γ ( t ) ∈ C ∞ \gamma(t)\in C^{\infty} γ(t)C,那么曲线 γ ( t ) \gamma(t) γ(t)是平滑的。

以上不同定义对于“漂亮”的表述并不明朗,我们还需要进一步检查平滑性到底需要插值曲线的哪些性质,如下图所示:
在这里插入图片描述
上图展示了三个平面上控制点间的插值曲线,其中:a)非连续插值曲线;b)连续插值曲线;c) C 1 C^{1} C1连续插值曲线;d) C 2 C^{2} C2连续插值曲线。

很明显,我们希望曲线必须是连续且可微的,不希望在动态曲线上出现“漏洞”或“中断”,因此我们要求插值曲线至少必须是 C 1 C^{1} C1。至于是否需要 C 2 C^{2} C2甚至 C ∞ C^{\infty} C暂不确定。

由于控制点是对称的(双倍覆盖),所以很自然地期望插值曲线也是对称的。从之前平面上展示的曲线明确表明:我们至少需要 C 2 C^{2} C2而不是 C 1 C^{1} C1,然而平面展示的曲线并不是采用 C 2 C^{2} C2的充分条件,因此目前采用几阶连续并不明朗,我们将这一决定推迟到下一篇Sping中。

γ ( t ) \gamma(t) γ(t)平滑性的第一条定义中要求 γ ′ ( t ) ≠ 0 \gamma^{'}(t)\neq 0 γ(t)=0,这意味着插值函数不允许包含奇点。现在看来,这似乎是一个合理的要求。然而,某些情况也有可能对插值曲线的速度提出合理但矛盾的要求。例如,考虑一个钟摆的动画,控制点(它们定义钟摆摆动的角度)将位于旋转空间的直线上。然而在端点处,钟摆应该没有速度,这与插值函数中的奇点相对应。因此,我们也将是否允许包含奇点这一推论推迟到下一篇Sping中。

关于平滑性的讨论并没有给我们带来太多的启发。上面的定义甚至无法让我们区分LinEuler、Lerp和Slerp,这些曲线都是 C 2 C^{2} C2(但在控制点处是 C 0 C^{0} C0)。因此,仅仅描述插值曲线应该属于哪一类连续函数是不够的。

3. 最优插值曲线

3.1 最优插值曲线的引出

我们关于平滑性的考量对插值曲线的定义并没有给出明确的需求,但是我们需要一个客观明确的指标来衡量我们的曲线在旋转空间中的“漂亮”程度。

我们将再次在平面中曲线寻找灵感(见下图)。如前所述,三次曲线通常用于在一系列点之间的插值。三次曲线有很多种,在《三维空间刚体运动4-3:四元数线性插值方法:Squad》中描述的贝塞尔曲线就是一个例子,而最常见的一类曲线是样条曲线。
在这里插入图片描述
上图表示平面中的样条插值:a)简单线性插值;b)样条插值曲线。

讨论样条曲线,我们必须像其他严谨的项目使用样条曲线那样,写一点关于造船者的故事。传统上,当造船者想要决定如何塑造一艘船的弯曲部分时,会使用一块有弹性的金属,这块金属被固定在一组铆钉之间。然后,金属部件与铆钉相适应,形成一个有张力的优美柔和的曲线,造船者称这个金属部件为样条4

从物理上看,上面对样条的描述对应于金属片在铆钉约束条件下,达到最小的内部张力的形态。从数学角度讲,金属件使曲率(curvature)最小,从而使曲线更平滑。曲率是指一条(平面上的)曲线在特定点弯曲的程度,它正比于曲线转过的角度,反比于曲线的长度5

在平面中,这个曲线的要求可以描述如下:
给定控制点 ( x i , y i ) ∈ R 2 (x_{i},y_{i})\in \mathbb{R}^{2} (xi,yi)R2,定义曲线 γ ( t ) ∈ C 2 ( I , R 2 ) \gamma(t)\in C^{2}(I,\mathbb{R}^{2}) γ(t)C2(I,R2),其中 t t t是自然参数(如曲线长度或0-1之间的进度比等),并且使 γ ( t ) \gamma(t) γ(t)经过控制点,同时使表达式 ∫ I ∥ γ ′ ′ ( t ) ∥ 2 d t \int _{I}\left \| \gamma ^{''}(t) \right \| ^{2}dt I γ′′(t) 2dt最小化,此时曲率平方值最小。

这个简单的公式从微分几何中的一般概念出发,给出了插值曲线的明确定义。因此,我们选择将曲率(或曲率平方)最小的曲线视为最优插值曲线。下面我们将看到,在 H 1 H_{1} H1中计算这条曲线并不像在平面上那么简单。

3.2 最优插值曲线在 H 1 H_{1} H1的曲率

插值曲线位于四元数空间的超球面 H 1 H_{1} H1上,假设 t t t为自然参数,那么曲线 γ ( t ) \gamma (t) γ(t)的曲率通常被定义为 ∥ γ ′ ′ ( t ) ∥ \left \| \gamma ^{''}(t) \right \| γ′′(t)

这里解释一下,上文关于曲率的资料中,具有二阶可导函数的曲线在某点曲率被定义为: K ( t ) = ∥ γ ′ ′ ( t ) ∥ ( 1 + γ ′ ( t ) 2 ) 3 2 (3.1) K(t)=\frac{\left \| \gamma ^{''}(t) \right \|}{(1+\gamma ^{'}(t)^{2})\frac{3}{2}}\tag{3.1} K(t)=(1+γ(t)2)23 γ′′(t) (3.1)然而在本篇论文中,曲率的分母被省略,这是因为假设t为自然参数。注意,这里 t t t不一定是自然参数,所以上述定义在严格的微分几何意义上是不正确的。当t为自然参数时,参数化的曲线曲率可写作 κ ( r , t ) = ∥ γ ′ ′ ( t ) ∥ \kappa (r,t)=\left \| \gamma ^{''}(t) \right \| κ(r,t)= γ′′(t) ,而当t为连续值时,对于光滑曲线 γ ( t ) \gamma(t) γ(t),微分几何上曲线曲率的正确表达式为: κ ( γ , t ) = ∥ γ ′ ′ ( t ) ∥ γ ′ ( t ) ∥ 2 − γ ′ ( t ) ( γ ′ ′ ( t ) ⋅ γ ′ ( t ) ) ∥ γ ′ ( t ) ∥ 4 ∥ \kappa(\gamma, t)=\left \| \frac{\gamma ^{''}(t)}{\left \| \gamma^{'}(t) \right \|^{2}} - \frac{\gamma^{'}(t) (\gamma ^{''}(t) \cdot \gamma^{'}(t))}{\left \| \gamma^{'}(t) \right \|^{4}}\right \| κ(γ,t)= γ(t)2γ′′(t)γ(t)4γ(t)(γ′′(t)γ(t)) 但是这里我们只使用t为自然数的情形。

插值曲线Slerp在四元数单位圆上产生 大弧线 H 1 H_{1} H1上的圆弧在切平面上的投影是一条直线,因此,可以预料大弧线的投影是没有曲率的。如果用 ∥ γ ′ ′ ( t ) ∥ \left \| \gamma ^{''}(t) \right \| γ′′(t) 来计算曲率,曲率将不是0而是1,即单位球的曲率。因此,我们需要计算的是相对于四元数单位球面的曲率(即大弧线),而不是相对于四元数空间(即直线),我们称这个曲率为局部曲率

曲面上某条曲线的局部曲率定义是基于微分几何的,曲线中某点的局部曲率可以定义如下:给定曲线上的点,过点做关于曲线的切平面,将一个坐标系统(地图)放置在切平面上, 曲线某点的局部曲率就是曲线投影到坐标系统上的曲线的曲率,这也叫做正切曲率。正切曲率越小,说明越接近测地线,

在微分几何中,大弧线(直线)称为测地线。测地线投影到切面上,就成了一条直线。因此,正如预期的那样,我们看到大弧线没有任何局部弯曲。下面我们开始分析正切曲率,如下图所示:
在这里插入图片描述
上图表示曲线 γ ( t ) \gamma (t) γ(t)的正切向量 γ ′ ( t ) \gamma ^{'}(t) γ(t)和正切曲率 γ ′ ′ ( t ) \gamma ^{''}(t) γ′′(t)在平面的分量:a)表示位于四元数单位球面上曲线的 位置向量 γ ( t ) \gamma (t) γ(t)在正切平面上的投影为 γ ′ ( t ) \gamma ^{'}(t) γ(t);b)表示将向量 γ ′ ′ ( t ) \gamma ^{''}(t) γ′′(t)分解为在正切平面的分量 γ t ′ ′ ( t ) \gamma ^{''}_{t}(t) γt′′(t)和平行于位置矢量的分量 γ o ′ ′ ( t ) \gamma ^{''}_{o}(t) γo′′(t)

由上图可知,如果曲线 γ ( t ) \gamma (t) γ(t)位于 H 1 H_{1} H1的表面,我们可以将 γ ′ ′ ( t ) \gamma ^{''}(t) γ′′(t)分解为两个部分 γ t ′ ′ ( t ) \gamma ^{''}_{t}(t) γt′′(t) γ o ′ ′ ( t ) \gamma ^{''}_{o}(t) γo′′(t)。期望的曲率部分是 γ t ′ ′ ( t ) \gamma ^{''}_{t}(t) γt′′(t),因为它表示 γ ′ ′ ( t ) \gamma ^{''}(t) γ′′(t)的弯曲程度,它越小, γ ( t ) \gamma (t) γ(t)越接近测地线。因此,曲线 γ ( t ) \gamma (t) γ(t)的局部曲率 κ \kappa κ可以表示为: κ ( r , t ) = ∥ γ t ′ ′ ( t ) ∥ = ∥ γ ′ ′ ( t ) − γ o ′ ′ ( t ) ∥ \kappa (r,t)=\left \| \gamma ^{''}_{t}(t) \right \|=\left \| \gamma ^{''}(t)-\gamma ^{''}_{o}(t) \right \| κ(r,t)= γt′′(t) = γ′′(t)γo′′(t) 由于曲线 γ ( t ) \gamma (t) γ(t)位于 H 1 H_{1} H1的表面, γ o ′ ′ ( t ) \gamma ^{''}_{o}(t) γo′′(t)平行于 γ ( t ) \gamma (t) γ(t),因此 γ o ′ ′ ( t ) \gamma ^{''}_{o}(t) γo′′(t)可以表示为 γ ′ ′ ( t ) \gamma ^{''}(t) γ′′(t) γ ( t ) \gamma (t) γ(t)的投影,根据 投影公式有:

γ t ′ ′ ( t ) = γ ′ ′ ( t ) − γ o ′ ′ ( t ) = γ ′ ′ ( t ) − ( γ ′ ′ ( t ) ⋅ γ ( t ) ∥ γ ( t ) ∥ ) γ ( t ) ∥ γ ( t ) ∥ = γ ′ ′ ( t ) − ( γ ′ ′ ( t ) ⋅ γ ( t ) ) γ ( t ) \begin{aligned} \gamma ^{''}_{t}(t) &= \gamma ^{''}(t)-\gamma ^{''}_{o}(t) \\&= \gamma ^{''}(t)-\left ( \gamma ^{''}(t) \cdot \frac{\gamma (t)}{\left \| \gamma (t) \right \|} \right )\frac{\gamma (t)}{\left \| \gamma (t) \right \|} \\&= \gamma ^{''}(t) - (\gamma ^{''}(t) \cdot \gamma (t))\gamma (t) \end{aligned} γt′′(t)=γ′′(t)γo′′(t)=γ′′(t)(γ′′(t)γ(t)γ(t))γ(t)γ(t)=γ′′(t)(γ′′(t)γ(t))γ(t)由此给出局部曲率 κ \kappa κ的定义:给定 γ ( t ) ∈ C 2 ( I , H 1 ) \gamma(t)\in C^{2}(I,H_{1}) γ(t)C2(I,H1),局部曲率 κ ( γ , t ) \kappa(\gamma, t) κ(γ,t)被定义为: κ ( γ , t ) = ∥ γ ′ ′ ( t ) − ( γ ′ ′ ( t ) ⋅ γ ( t ) ) γ ( t ) ∥ (3.2) \kappa(\gamma, t)=\left \| \gamma ^{''}(t) - (\gamma ^{''}(t) \cdot \gamma (t))\gamma (t) \right \|\tag{3.2} κ(γ,t)= γ′′(t)(γ′′(t)γ(t))γ(t) (3.2)然而,我们感兴趣的不仅仅是插值曲线的形状(曲率)。我们还想要一个“漂亮的”角速度函数,即使角加速度最小化的函数(从物理角度来看,对应的是使能量最小化)。角速度和角加速度分别对应 γ ′ ( t ) \gamma ^{'}(t) γ(t) γ ′ ′ ( t ) \gamma ^{''}(t) γ′′(t),在表达式3.2中角加速度是自动包括在内的,因为我们没有重新参数化自然参数,因此我们可以使用表达式3.2来计算曲率。

下面将基于这个结论,分别介绍正切曲率 κ ( γ , t ) \kappa(\gamma, t) κ(γ,t) H 1 H_{1} H1上的连续解析解Spicv(第4章)、连续半解析解(第5章)和离散数字化解Sping(篇幅原因,留至下篇)。

4. 正切曲率 κ ( γ , t ) \kappa(\gamma, t) κ(γ,t) H 1 H_{1} H1上的连续解析解——Spicv

4.1 函数 K ( γ ) K(\gamma) K(γ)及变分法

我们将 H 1 H_{1} H1中的最优插值曲线定义为曲率平方和最小的曲线,但又必须通过控制点的限制,然后再定义 H 1 H_{1} H1中曲率的相关表达式。因此,我们得到问题的公式函数 K ( γ ) K(\gamma) K(γ)如下:

给定控制点 q 1 , . . . , q N ∈ H 1 q_{1},...,q_{N}\in H_{1} q1,...,qNH1,求 γ ( t ) ∈ C 2 ( I , H 1 ) \gamma(t)\in C^{2}(I,H_{1}) γ(t)C2(I,H1),使存在 t 1 , . . . , t N ∈ ( I ) t_{1},...,t_{N}\in (I) t1,...,tN(I),满足 γ ( t i ) = q i \gamma(t_{i})=q_{i} γ(ti)=qi,并使下列表达式最小化: K ( γ ) = ∫ t 1 t N ∥ κ ( γ , t ) ∥ 2 d t (4.1) K(\gamma)=\int_{t_{1}}^{t_{N}}\left \| \kappa (\gamma,t) \right \|^{2}dt\tag{4.1} K(γ)=t1tNκ(γ,t)2dt(4.1)这里将求以 γ \gamma γ为变量的曲率问题 κ ( γ , t ) \kappa (\gamma,t) κ(γ,t)转换为曲率平方的积分问题 K ( γ ) K(\gamma) K(γ),同样以函数 γ \gamma γ为变量。这里 K ( γ ) K(\gamma) K(γ)求的是整条曲线各个点的曲率平方之和,当它越小时,转弯就越平滑,所耗费的动能也就越少,符合导航线路的基本要求。

使函数的积分最小化的问题叫做变分演算问题,又称变分法(Calculus of Variations)6。在这里应用变分法只要记住,求极值应用到的必要条件是一阶导数为零。因此这个方法命名为Spicv(Spherical Interpolation using Calculus of Variations)。

下面,我们概述变分学中解决问题的基本方法。积分函数 K ( γ ) K(\gamma) K(γ)达到最小值的一个必要条件是 K ′ ( γ ) = 0 K^{'}(\gamma)=0 K(γ)=0,对于 δ ∈ R \delta \in \mathbb{R} δR ψ ∈ C k ( I , H 1 ) \psi \in C^{k}(I,H_{1}) ψCk(I,H1),根据导数定义: lim ⁡ δ → 0 K ( γ + δ ψ ) − K ( γ ) δ = 0 (4.2) \lim_{\delta\rightarrow 0}\frac{K(\gamma+\delta \psi)-K(\gamma)}{\delta}=0\tag{4.2} δ0limδK(γ+δψ)K(γ)=0(4.2)上式中,函数 δ ψ \delta \psi δψ称为 γ \gamma γ的变量函数,函数 γ + δ ψ \gamma+\delta \psi γ+δψ称为比较函数。满足边界条件的函数 γ ( t ) ∈ C 2 ( I , H 1 ) \gamma(t)\in C^{2}(I,H_{1}) γ(t)C2(I,H1)称为容许函数(admissible function)。这样,我们就得到了关于 γ \gamma γ的条件函数。

4.2 求解 γ \gamma γ

现在我们推导变分问题的解必须满足的要求。因此,我们假定解 γ \gamma γ和比较函数 γ + δ ψ \gamma+\delta \psi γ+δψ都是可容许或称可接受的,并且 K ( γ ) K(\gamma) K(γ)是最小的。

比较函数 γ + δ ψ \gamma+\delta \psi γ+δψ若要被容许,前提必须是: ψ ( t 1 ) = ψ ( t 2 ) = . . . = ψ ( t N ) = 0 (4.3) \psi (t_{1}) = \psi (t_{2}) = ... = \psi (t_{N}) = 0\tag{4.3} ψ(t1)=ψ(t2)=...=ψ(tN)=0(4.3)此外,由于 γ \gamma γ γ + δ ψ \gamma+\delta \psi γ+δψ在单位球面上,我们有 ∥ γ ∥ = 1 \left \| \gamma \right \|=1 γ=1 ∥ γ + δ ψ ∥ = 1 \left \| \gamma+\delta \psi\right \|=1 γ+δψ=1。在下面的推导中,可以忽略表达式成分中包含四元数函数这一情况,这是因为没有使用四元数乘法(只使用标量乘积)。

因此,交换性没有问题。因此我们有: 1 = ∥ γ + δ ψ ∥ 2 = ∥ γ ∥ 2 + δ 2 ∥ ψ ∥ + 2 δ ( γ ⋅ ψ ) = 1 + δ ( δ ∥ ψ ∥ + 2 γ ⋅ ψ ) \begin{aligned} 1 &= \left \| \gamma + \delta \psi \right \|^{2} \\&= \left \| \gamma \right \|^{2} + \delta^{2}\left \| \psi \right \| + 2\delta(\gamma \cdot \psi) \\&= 1 + \delta(\delta\left \| \psi \right \| + 2\gamma \cdot \psi) \end{aligned} 1=γ+δψ2=γ2+δ2ψ+2δ(γψ)=1+δ(δψ+2γψ) ⇒ γ ⋅ ψ = − δ 2 ∥ ψ ∥ 2 (4.4) \Rightarrow \gamma \cdot \psi = -\frac{\delta}{2}\left \| \psi \right \|^{2}\tag{4.4} γψ=2δψ2(4.4)我们想用关于"导数"的知识来检验 K ( γ + δ ψ ) − K ( γ ) K(\gamma+\delta \psi)-K(\gamma) K(γ+δψ)K(γ) K ( γ + δ ψ ) − K ( γ ) = ∫ t 1 t N ∥ κ ( γ + δ ψ , t ) ∥ 2 − ∥ κ ( γ , t ) ∥ d t = ∫ t 1 t N ∥ ( γ + δ ψ ) ′ ′ − ( ( γ + δ ψ ) ′ ′ ⋅ ( γ + δ ψ ) ) ( γ + δ ψ ) ∥ 2 − ∥ γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ∥ 2 d t = ∫ t 1 t N ∥ γ ′ ′ + δ ψ ′ ′ − ( γ ′ ′ ⋅ γ + δ γ ′ ′ ⋅ ψ + δ γ ψ ′ ′ + δ 2 ψ ′ ′ ⋅ ψ ) ( γ + δ ψ ) ∥ 2 − ∥ γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ∥ 2 d t = ∫ t 1 t N ∥ [ γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ] + δ [ ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ψ − ( γ ′ ′ ⋅ ψ ) γ − ( ψ ′ ′ ⋅ γ ) γ ) ] + δ 2 [ . . . ] + δ 3 [ . . . ] ∥ 2 − ∥ γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ∥ 2 d t \begin{aligned} K(\gamma+\delta \psi)-K(\gamma) &= \int_{t_{1}}^{t_{N}}\left \| \kappa (\gamma+\delta\psi,t) \right\|^{2} - \left \| \kappa (\gamma,t) \right \|dt \\&= \int_{t_{1}}^{t_{N}}\left \| (\gamma+\delta\psi)^{''}-((\gamma+\delta\psi)^{''}\cdot(\gamma+\delta\psi))(\gamma+\delta\psi) \right \|^{2} - \left \| \gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma \right \|^{2}dt \\&= \int_{t_{1}}^{t_{N}}\left \| \gamma^{''} + \delta\psi^{''}-(\gamma^{''}\cdot\gamma+\delta\gamma^{''}\cdot\psi+\delta\gamma\psi^{''}+\delta^{2}\psi^{''}\cdot\psi)(\gamma+\delta\psi) \right \|^{2} - \left \| \gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma \right \|^{2}dt \\&= \int_{t_{1}}^{t_{N}}\left \| [\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma] + \delta[\psi^{''}-(\gamma^{''}\cdot\gamma)\psi-(\gamma^{''}\cdot\psi)\gamma-(\psi^{''}\cdot\gamma)\gamma)] + \delta^{2}[...] + \delta^{3}[...]\right \|^{2} \\ &\quad\quad- \left \| \gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma \right \|^{2}dt\end{aligned} K(γ+δψ)K(γ)=t1tNκ(γ+δψ,t)2κ(γ,t)dt=t1tN (γ+δψ)′′((γ+δψ)′′(γ+δψ))(γ+δψ) 2 γ′′(γ′′γ)γ 2dt=t1tN γ′′+δψ′′(γ′′γ+δγ′′ψ+δγψ′′+δ2ψ′′ψ)(γ+δψ) 2 γ′′(γ′′γ)γ 2dt=t1tN [γ′′(γ′′γ)γ]+δ[ψ′′(γ′′γ)ψ(γ′′ψ)γ(ψ′′γ)γ)]+δ2[...]+δ3[...] 2 γ′′(γ′′γ)γ 2dt在上述表达式中,我们根据 δ \delta δ的指数收集了多项式。上述推导的目的是求导数。 K ( γ + δ ψ ) − K ( γ ) K(\gamma+\delta \psi)-K(\gamma) K(γ+δψ)K(γ)的展开式中,被 δ 2 \delta^{2} δ2 δ 3 \delta^{3} δ3乘的多项式可以被删除,因为在检查极限时,除以 δ \delta δ后,当 δ \delta δ无限接近零时它们就消失了。因此,上面表达式可被写为: K ( γ + δ ψ ) − K ( γ ) = ∫ t 1 t N ∥ A + δ B ∥ 2 − ∥ A ∥ 2 d t = ∫ t 1 t N δ 2 ∥ B ∥ 2 + 2 δ A ⋅ B d t \begin{aligned} K(\gamma+\delta \psi)-K(\gamma) &= \int_{t_{1}}^{t_{N}}\left \| A+\delta B \right \|^{2} - \left \| A \right \|^{2}dt \\&= \int_{t_{1}}^{t_{N}}\delta^{2}\left \| B \right \|^{2}+2\delta A\cdot Bdt\end{aligned} K(γ+δψ)K(γ)=t1tNA+δB2A2dt=t1tNδ2B2+2δABdt这里 A = γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ , B = ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ψ − ( γ ′ ′ ⋅ ψ ) γ − ( ψ ′ ′ ⋅ γ ) γ ) A=\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma,B=\psi^{''}-(\gamma^{''}\cdot\gamma)\psi-(\gamma^{''}\cdot\psi)\gamma-(\psi^{''}\cdot\gamma)\gamma) A=γ′′(γ′′γ)γ,B=ψ′′(γ′′γ)ψ(γ′′ψ)γ(ψ′′γ)γ)。同样省略被 δ 2 \delta^{2} δ2乘的项,重写表达式为: K ( γ + δ ψ ) − K ( γ ) = ∫ t 1 t N 2 δ [ γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ] [ ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ψ − ( γ ′ ′ ⋅ ψ ) γ − ( ψ ′ ′ ⋅ γ ) γ ) ] d t = 2 δ ∫ t 1 t N γ ′ ′ ⋅ ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ ) − ( γ ′ ′ ⋅ ψ ) ( γ ′ ′ ⋅ γ ) − ( γ ⋅ ψ ′ ′ ) ( γ ′ ′ ⋅ γ ) − ( γ ′ ′ ⋅ γ ) ( γ ⋅ ψ ′ ′ ) + ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ γ ) ( γ ⋅ ψ ) + ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ ) ( γ ⋅ γ ) + ( γ ′ ′ ⋅ γ ) ( γ ⋅ ψ ′ ′ ) ( γ ⋅ γ ) d t \begin{aligned} K(\gamma+\delta \psi)-K(\gamma) &= \int_{t_{1}}^{t_{N}}2\delta[\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma][\psi^{''}-(\gamma^{''}\cdot\gamma)\psi-(\gamma^{''}\cdot\psi)\gamma-(\psi^{''}\cdot\gamma)\gamma)]dt \\&= 2\delta\int_{t_{1}}^{t_{N}}\gamma^{''}\cdot\psi^{''}-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi)-(\gamma^{''}\cdot\psi)(\gamma^{''}\cdot\gamma)-(\gamma\cdot\psi^{''})(\gamma^{''}\cdot\gamma)-(\gamma^{''}\cdot\gamma)(\gamma\cdot\psi^{''}) \\&\quad\quad+ (\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\gamma)(\gamma\cdot\psi)+(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi)(\gamma\cdot\gamma)+(\gamma^{''}\cdot\gamma)(\gamma\cdot\psi^{''})(\gamma\cdot\gamma)dt\end{aligned} K(γ+δψ)K(γ)=t1tN2δ[γ′′(γ′′γ)γ][ψ′′(γ′′γ)ψ(γ′′ψ)γ(ψ′′γ)γ)]dt=2δt1tNγ′′ψ′′(γ′′γ)(γ′′ψ)(γ′′ψ)(γ′′γ)(γψ′′)(γ′′γ)(γ′′γ)(γψ′′)+(γ′′γ)(γ′′γ)(γψ)+(γ′′γ)(γ′′ψ)(γγ)+(γ′′γ)(γψ′′)(γγ)dt由于 γ \gamma γ在四元数单位圆 H 1 H_{1} H1上,因此 γ ⋅ γ = ∥ γ ∥ 2 = 1 \gamma\cdot\gamma=\left \| \gamma \right \|^{2}=1 γγ=γ2=1,同时将公式(4.4)的结论 γ ⋅ ψ = − δ 2 ∥ ψ ∥ 2 \gamma \cdot \psi = -\frac{\delta}{2}\left \| \psi \right \|^{2} γψ=2δψ2代入上述表达式中,我们得到: K ( γ + δ ψ ) − K ( γ ) = 2 δ ∫ t 1 t N γ ′ ′ ⋅ ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ + γ ⋅ ψ ′ ′ ) + ( γ ′ ′ ⋅ γ ) 2 ( − δ 2 ∥ ψ ∥ 2 ) d t = 2 δ ∫ t 1 t N γ ′ ′ ⋅ ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ + γ ⋅ ψ ′ ′ ) d t \begin{aligned} K(\gamma+\delta \psi)-K(\gamma) &= 2\delta\int_{t_{1}}^{t_{N}}\gamma^{''}\cdot\psi^{''}-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi+\gamma\cdot\psi^{''})+(\gamma^{''}\cdot\gamma)^{2}( -\frac{\delta}{2}\left \| \psi \right \|^{2})dt \\&= 2\delta\int_{t_{1}}^{t_{N}}\gamma^{''}\cdot\psi^{''}-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi+\gamma\cdot\psi^{''})dt\end{aligned} K(γ+δψ)K(γ)=2δt1tNγ′′ψ′′(γ′′γ)(γ′′ψ+γψ′′)+(γ′′γ)2(2δψ2)dt=2δt1tNγ′′ψ′′(γ′′γ)(γ′′ψ+γψ′′)dt同样省略被 δ 2 \delta^{2} δ2乘的项。经过多次改写,我们将 δ \delta δ分离单独作为一个因素。当除以 δ \delta δ时,这个因子将消失在导数的表达式中。因此,我们现在想分离出包含 ψ \psi ψ的项,使用分部积分和公式(4.3)的结论,表达式被重写如下: K ( γ + δ ψ ) − K ( γ ) = 2 δ ∑ i = 1 N − 1 L i \begin{aligned} K(\gamma+\delta \psi)-K(\gamma) &= 2\delta \sum_{i=1}^{N-1}L_{i}\end{aligned} K(γ+δψ)K(γ)=2δi=1N1Li其中 L i = ∫ t i t i + 1 γ ′ ′ ⋅ ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ + γ ⋅ ψ ′ ′ ) d t = ∫ t i t i + 1 ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ⋅ ψ ′ ′ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ ) d t = [ ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ⋅ ψ ′ ] t i t i + 1 − ∫ t i t i + 1 ( d d t ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ) ⋅ ψ ′ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ ) d t = [ ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ⋅ ψ ′ ] t i t i + 1 − [ ( d d t ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ) ⋅ ψ ] t i t i + 1 + ∫ t i t i + 1 ( d 2 d t 2 ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ) ⋅ ψ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ ) d t \begin{aligned} L_{i} &= \int_{t_{i}}^{t_{i+1}}\gamma^{''}\cdot\psi^{''}-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi+\gamma\cdot\psi^{''})dt \\&= \int_{t_{i}}^{t_{i+1}}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)\cdot\psi^{''}-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi)dt \\&= [(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)\cdot\psi^{'}]_{t_{i}}^{t_{i+1}} - \int_{t_{i}}^{t_{i+1}}(\frac{d}{dt}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma))\cdot\psi^{'}-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi)dt \\&= [(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)\cdot\psi^{'}]_{t_{i}}^{t_{i+1}} - [(\frac{d}{dt}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma))\cdot\psi]_{t_{i}}^{t_{i+1}} \\& \quad\quad+\int_{t_{i}}^{t_{i+1}}(\frac{d^{2}}{dt^{2}}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma))\cdot\psi-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi)dt\end{aligned} Li=titi+1γ′′ψ′′(γ′′γ)(γ′′ψ+γψ′′)dt=titi+1(γ′′(γ′′γ)γ)ψ′′(γ′′γ)(γ′′ψ)dt=[(γ′′(γ′′γ)γ)ψ]titi+1titi+1(dtd(γ′′(γ′′γ)γ))ψ(γ′′γ)(γ′′ψ)dt=[(γ′′(γ′′γ)γ)ψ]titi+1[(dtd(γ′′(γ′′γ)γ))ψ]titi+1+titi+1(dt2d2(γ′′(γ′′γ)γ))ψ(γ′′γ)(γ′′ψ)dt注意,上面的表达式要求它是四阶可微的。现在我们可以使用 ψ \psi ψ在所有控制点上为零的公式(4.3),可以看到第二项为零,于是得到: L i = [ ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ⋅ ψ ′ ] t i t i + 1 + ∫ t i t i + 1 ( d 2 d t 2 ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ) ⋅ ψ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ ) d t \begin{aligned} L_{i} &= [(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)\cdot\psi^{'}]_{t_{i}}^{t_{i+1}} +\int_{t_{i}}^{t_{i+1}}(\frac{d^{2}}{dt^{2}}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma))\cdot\psi-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi)dt\end{aligned} Li=[(γ′′(γ′′γ)γ)ψ]titi+1+titi+1(dt2d2(γ′′(γ′′γ)γ))ψ(γ′′γ)(γ′′ψ)dt再次考虑整个表达式: K ( γ + δ ψ ) − K ( γ ) = 2 δ ∑ i = 1 N − 1 L i = 2 δ ∑ i = 1 N − 1 [ ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ⋅ ψ ′ ] t i t i + 1 + 2 δ ∑ i = 1 N − 1 ∫ t i t i + 1 ( d 2 d t 2 ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ) ⋅ ψ − ( γ ′ ′ ⋅ γ ) ( γ ′ ′ ⋅ ψ ) d t = 2 δ [ ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ⋅ ψ ′ ] t 1 t N + 2 δ ∑ i = 1 N − 1 ∫ t i t i + 1 ( d 2 d t 2 ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) − ( γ ′ ′ ⋅ γ ) γ ′ ′ ) ⋅ ψ d t \begin{aligned} K(\gamma+\delta \psi)-K(\gamma) &= 2\delta \sum_{i=1}^{N-1}L_{i} \\&= 2\delta\sum_{i=1}^{N-1}[(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)\cdot\psi^{'}]_{t_{i}}^{t_{i+1}} + 2\delta\sum_{i=1}^{N-1}\int_{t_{i}}^{t_{i+1}}(\frac{d^{2}}{dt^{2}}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma))\cdot\psi-(\gamma^{''}\cdot\gamma)(\gamma^{''}\cdot\psi)dt \\&= 2\delta[(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)\cdot\psi^{'}]_{t_{1}}^{t_{N}} + 2\delta\sum_{i=1}^{N-1}\int_{t_{i}}^{t_{i+1}}(\frac{d^{2}}{dt^{2}}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)-(\gamma^{''}\cdot\gamma)\gamma^{''})\cdot\psi dt \end{aligned} K(γ+δψ)K(γ)=2δi=1N1Li=2δi=1N1[(γ′′(γ′′γ)γ)ψ]titi+1+2δi=1N1titi+1(dt2d2(γ′′(γ′′γ)γ))ψ(γ′′γ)(γ′′ψ)dt=2δ[(γ′′(γ′′γ)γ)ψ]t1tN+2δi=1N1titi+1(dt2d2(γ′′(γ′′γ)γ)(γ′′γ)γ′′)ψdt利用控制点的连续性进行最后改写,我们可以求出“导数”: lim ⁡ δ → 0 K ( γ + δ ψ ) − K ( γ ) δ = 2 [ ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) ⋅ ψ ′ ] t 1 t N + 2 ∑ i = 1 N − 1 ∫ t i t i + 1 ( d 2 d t 2 ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) − ( γ ′ ′ ⋅ γ ) γ ′ ′ ) ⋅ ψ d t (4.5) \begin{aligned} \lim_{\delta\rightarrow 0}\frac{K(\gamma+\delta \psi)-K(\gamma)}{\delta} &= 2[(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)\cdot\psi^{'}]_{t_{1}}^{t_{N}} \\&+ 2\sum_{i=1}^{N-1}\int_{t_{i}}^{t_{i+1}}(\frac{d^{2}}{dt^{2}}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma)-(\gamma^{''}\cdot\gamma)\gamma^{''})\cdot\psi dt \tag{4.5}\end{aligned} δ0limδK(γ+δψ)K(γ)=2[(γ′′(γ′′γ)γ)ψ]t1tN+2i=1N1titi+1(dt2d2(γ′′(γ′′γ)γ)(γ′′γ)γ′′)ψdt(4.5)由于 γ ⋅ γ = ∥ γ ∥ = 1 \gamma\cdot\gamma=\left \| \gamma \right \|=1 γγ=γ=1,所以有: 0 = ( 1 ) ′ ′ = ( γ ⋅ γ ) ′ ′ = 2 γ ′ ′ ⋅ γ + 2 γ ′ ⋅ γ ′ (4.6) 0=(1)^{''}=(\gamma\cdot\gamma)^{''}=2\gamma^{''}\cdot\gamma+2\gamma^{'}\cdot\gamma^{'}\tag{4.6} 0=(1)′′=(γγ)′′=2γ′′γ+2γγ(4.6)由于在控制点处对任意 ψ \psi ψ的导数必须为零(方程4.3),结合方程4.6,我们对解有以下要求: γ ∈ C 4 ( ( I ) , H 1 ) 0 = γ ′ ′ ( t 1 ) − ( γ ′ ′ ( t 1 ) ⋅ γ ( t 1 ) ) γ ( t 1 ) 0 = γ ′ ′ ( t N ) − ( γ ′ ′ ( t N ) ⋅ γ ( t N ) ) γ ( t N ) ( γ ′ ′ ⋅ γ ) γ ′ ′ = d 2 d t 2 ( γ ′ ′ − ( γ ′ ′ ⋅ γ ) γ ) = γ ′ ′ ′ ′ − ( γ ′ ′ ⋅ γ ) ′ ′ γ − 2 ( γ ′ ′ ⋅ γ ) ′ γ ′ − ( γ ′ ′ ⋅ γ ) γ ′ ′ ⇒ 0 = γ ′ ′ ′ ′ + ( γ ′ ⋅ γ ′ ) ′ ′ γ + 2 ( γ ′ ⋅ γ ′ ) ′ γ ′ + 2 ( γ ′ ⋅ γ ′ ) γ ′ ′ \begin{aligned} \gamma & \in C^{4}((I),H_{1}) \\ 0 &= \gamma^{''}(t_{1})-(\gamma^{''}(t_{1})\cdot\gamma(t_{1}))\gamma(t_{1}) \\ 0 &= \gamma^{''}(t_{N})-(\gamma^{''}(t_{N})\cdot\gamma(t_{N}))\gamma(t_{N}) \\ (\gamma^{''}\cdot\gamma)\gamma^{''} &= \frac{d^{2}}{dt^{2}}(\gamma^{''}-(\gamma^{''}\cdot\gamma)\gamma) \\&= \gamma^{''''}-(\gamma^{''}\cdot\gamma)^{''}\gamma-2(\gamma^{''}\cdot\gamma)^{'}\gamma^{'}-(\gamma^{''}\cdot\gamma)\gamma^{''} \\ \Rightarrow 0&= \gamma^{''''}+(\gamma^{'}\cdot\gamma^{'})^{''}\gamma+2(\gamma^{'}\cdot\gamma^{'})^{'}\gamma^{'}+2(\gamma^{'}\cdot\gamma^{'})\gamma^{''} \end{aligned} γ00(γ′′γ)γ′′0C4((I),H1)=γ′′(t1)(γ′′(t1)γ(t1))γ(t1)=γ′′(tN)(γ′′(tN)γ(tN))γ(tN)=dt2d2(γ′′(γ′′γ)γ)=γ′′′′(γ′′γ)′′γ2(γ′′γ)γ(γ′′γ)γ′′=γ′′′′+(γγ)′′γ+2(γγ)γ+2(γγ)γ′′其中第二个和第三个要求等价于端点处的局部曲率为零。

综上所述,现在我们可以找到一组微分方程,当它有解时就能找到理想的最优插值曲线的解析解:
给定控制点 q 1 , . . . , q N ∈ H 1 q_{1},...,q_{N}\in H_{1} q1,...,qNH1,插值曲线 γ ∈ C 4 ( I , H 1 ) \gamma \in C^{4}(I,H_{1}) γC4(I,H1),对于 t i ∈ I t_{i}\in I tiI γ ( t i ) = q i \gamma(t_{i})=q_{i} γ(ti)=qi,当 γ \gamma γ满足以下要求时,将使 ∫ t 1 t N ∥ κ ( h ) ∥ 2 d t \int_{t_{1}}^{t_{N}}\left \| \kappa (h) \right \|^{2}dt t1tNκ(h)2dt最小化

  1. κ ( t 1 ) = 0 \kappa(t_{1})=0 κ(t1)=0
  2. κ ( t N ) = 0 \kappa(t_{N})=0 κ(tN)=0
  3. 对于每个间隔 t i < t < t i + 1 t_{i}<t<t_{i+1} ti<t<ti+1有: γ ′ ′ ′ ′ + ( γ ′ ⋅ γ ′ ) ′ ′ γ + 2 ( γ ′ ⋅ γ ′ ) ′ γ ′ + 2 ( γ ′ ⋅ γ ′ ) γ ′ ′ = 0 \gamma^{''''}+(\gamma^{'}\cdot\gamma^{'})^{''}\gamma+2(\gamma^{'}\cdot\gamma^{'})^{'}\gamma^{'}+2(\gamma^{'}\cdot\gamma^{'})\gamma^{''}=0 γ′′′′+(γγ)′′γ+2(γγ)γ+2(γγ)γ′′=0

现在“所有”剩下的工作就是用给定的边界值来解决上述四阶函数微分方程。不幸的是,这在现有的数学知识中是不可能的,也就是说,这个四阶函数微分方程无解,这由Jorgen Sand(哥本哈根大学计算机科学学院系统方程求解专业副教授)和Gerd Grubb(哥本哈根大学数学学院微分方程专业教授)确认过。

5. 正切曲率 κ ( γ , t ) \kappa(\gamma, t) κ(γ,t) H 1 H_{1} H1上的连续半解析解

上边是理想最优插值曲线在不可解微分方程上的严格数学推导。然而,我们可以再次在平面中寻找灵感:假设对应的微分方程是 γ ′ ′ ′ ′ \gamma^{''''} γ′′′′=0,即曲线的四阶导数在控制点之间必须为零,这对应于三阶曲线(样条)。如果解被约束为三阶曲线,则方程组求解起来会比较容易。

因此,我们可以限制所求插值曲线属于哪一类函数,例如,这可以是一种三次样条。在此限制下,优化问题得以解决。

根据曲线类定义的选择,这种寻找解决方案的策略将给出与 S q u a d Squad Squad相类似的结果。为了使此系列博客保持在可控制范围内,我们将不再进一步探讨连续半解析解方法。

本文总结:本节虽未找到具体解,但重点是引入了最优插值的求解理念,并给出连续解析解的详细证明过程,然后限于篇幅,只是对连续半解析解进行介绍,感兴趣的童鞋可以自行求证。Spicv虽然限于当前数学水平没有求出解,但是打开了我们探索解决未知问题的思路,同时为Sping做铺垫。下一篇将介绍最优插值曲线的离散数值解Sping的公式、求解和图像演示。

本文基于《视觉SLAM十四讲:从理论到实践》和《Quaternions, Interpolation and Animation》编写,但相对于原文会适当精简,同时为便于全面理解,会收集其他网络好文,根据作者理解,加入一些注解和扩展知识点,如果您觉得还不错,请一键四连(点赞关注收藏评论),让更多的人看到。

参考文献:

  1. 《视觉SLAM十四讲:从理论到实践》,高翔、张涛等著,中国工信出版社
  2. Quaternions, Interpolation and Animation
  3. 变分法入门介绍
  4. 什么是曲率和曲率半径?
  5. [Madsen, 1991] Tage Gutmann Madsen. Course notes for Mathematics 1MA (calculus). Matematisk Notetryk, Institute of Mathematics, University of Copenhagen, Denmark, Copenhagen, 1991.
  6. [Schwarz, 1989] H. R. Schwarz. Numerical Analysis, A Comprehensive Introduction. John Wiley & Sons, Chicester, 1989.
  7. [Jakobsen, 1993] Hans Plesner Jakobsen. Course notes for Mathematics 3GE (differential geometry). Matematisk Notetryk, Institute of Mathematics, University of Copenhagen, Denmark, Copenhagen, 1993.

  1. 请参考 [Madsen, 1991]。 ↩︎

  2. 请参考[Schwarz, 1989]。 ↩︎

  3. 请参考[Jakobsen, 1993]。 ↩︎

  4. 关于样条详细知识也请参考《三维空间刚体运动4-3:四元数线性插值方法:Squad》中的讲解。 ↩︎

  5. 关于曲率的知识请参考《什么是曲率和曲率半径》↩︎

  6. 关于变分法请参考文章《变分法入门介绍》,因此文已经介绍得比较好,所以这里不再赘述。 ↩︎

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值