一种基于球面样条曲线的刚体旋转运动设计方法与流程

文档序号:23923328发布日期:2021-02-09 19:51阅读:196来源:国知局
一种基于球面样条曲线的刚体旋转运动设计方法与流程

[0001]
本发明涉及惯性导航和计算机动画设计领域,尤其涉及一种基于球面样条曲线的刚体旋转运动设计方法。


背景技术:

[0002]
在惯性导航和计算机动画设计过程中,经常会涉及到目标物运动轨迹的规划问题,其中刚体旋转运动的生成是一个基本任务。刚体的旋转运动可用旋转矩阵(行列式为1的3
×
3的正交矩阵)或单位四元数曲线(也称三维球面曲线)来表示。与旋转矩阵相比,单位四元数具有四个变量和三个自由度,在描述旋转运动时更具优势。因此,研究球面样条曲线的构造对计算机动画,计算机辅助几何设计和惯性导航等领域都有重要的理论和实际意义。
[0003]
欧氏空间中存在着几种经典的样条曲线的构造方法,如b
é
zier曲线,b样条曲线以及nurbs曲线等。由于球面的非欧性,我们无法直接利用上述几种方法来构造球面样条曲线,但以这些方法为基础,研究人员们建立了多种构造球面插值样条曲线的方法,例如投射法、直接构造法。上述方法存在着一些局限性,它们不仅需要提前给出若干个插值点的位置信息,还需要给出插值点处的导矢信息,由于球面具有非欧结构,在给定导矢信息时还需考虑它们是否满足相应的条件,才能保证刚体旋转运动的光滑性。因此,现有技术的刚体旋转运动设计技术所需已知条件过多,适用范围较小以及不能对运动进行局部调整。


技术实现要素:

[0004]
本发明主要解决现有刚体旋转运动设计技术所需已知条件过多,适用范围较小以及不能对运动进行局部调整等问题,提出了一种基于球面样条曲线的刚体旋转运动设计方法。该方法简单便利,降低了对已知条件的限制,对运动的控制更加灵活,因此具有更广泛的实际应用价值。
[0005]
本发明提供了一种基于球面样条曲线的刚体旋转运动设计方法,包括以下过程:
[0006]
步骤100,设定运动过程中n个关键时刻刚体的旋转运动的姿态数据,其中,n表示关键时刻的个数;
[0007]
步骤200,拟合旋转运动在每个关键时刻的切向量、单位切向量、曲率向量和二阶共轭向量,包括步骤201至步骤203:
[0008]
步骤201,定义从4维欧氏空间到3维单位球面的切平面的映射;
[0009]
步骤202,拟合旋转运动在关键时刻的切向量和单位切向量;
[0010]
步骤203,拟合旋转运动在关键时刻的曲率向量和二阶共轭向量;
[0011]
步骤300,基于步骤200拟合出的旋转运动数据,利用五次球面b
é
zier曲线构建二阶参数连续的球面样条曲线,包括步骤301至步骤302:
[0012]
步骤301,计算b
é
zier曲线的控制顶点;
[0013]
步骤302,将步骤301中的五次球面b
é
zier曲线组合成球面样条曲线;
[0014]
步骤400,利用步骤300中得到的球面样条曲线,计算刚体上任意一点的旋转运动轨迹,完成刚体旋转运动的设计。
[0015]
进一步的,在步骤100中,设定运动过程中n个关键时刻刚体的旋转运动的姿态数据,包括:
[0016]
对于整数n≥2,用单位四元数序列{p
i
}表示运动过程中关键时刻刚体的旋转运动的姿态数据,其中i=1,2,

,n+1,令p0=p1,p
n+2
=p
n+1

[0017]
进一步的,在步骤201中,定义从4维欧氏空间到3维单位球面的切平面的映射,包括:
[0018]
将步骤100中设定的单位四元数序列{p
i
}视为3维单位球面s3中的点,其中i=1,2,

,n+1,对于任意4维欧氏空间r4中的点p,定义映射如下:
[0019]
ρ
i
(p)=p-<p,p
i
>p
i

[0020]
其中,表示球面s3在点p
i
处的切平面。
[0021]
进一步的,在步骤202中,拟合旋转运动在关键时刻的切向量和单位切向量,包括:
[0022]
对于i=1,2,

,n+1,令
[0023][0024]
拟合旋转运动在关键时刻的切向量v
i
,具体公式如下:
[0025]
v
i
=ρ
i
(p
i+1-p
i-1
),
[0026]
拟合旋转运动在关键时刻的单位切向量e
i
,具体公式如下:
[0027][0028]
进一步的,在步骤203中,拟合旋转运动在关键时刻的曲率向量和二阶共轭向量,包括:
[0029]
对于i=1,2,

,n+1,拟合旋转运动在关键时刻的曲率向量a
i
,具体公式如下:
[0030]
a
i
=λ
i
(p
i+1-2p
i
+p
i-1
),
[0031]
其中
[0032][0033]
拟合旋转运动在关键时刻的二阶共轭向量c
i
=a
i-<a
i
,p
i
〉p
i
,具体公式如下:
[0034]
c
i
=λ
i
ρ
i
(p
i+1
)+λ
i
ρ
i
(p
i-1
)。
[0035]
进一步的,在步骤301中,计算b
é
zier曲线的控制顶点,包括:
[0036]
对于i=1,2,

,n,令
[0037]
ε
i
=<p
i+1
+p
i-1
,e
i
>,
[0038]
通过以下公式计算五次球面b
é
zier曲线r
i
:[0,1]

s3的控制顶点b
ik
(k=0,1,

,5):
[0039]
b
i0
=p
i
,b,
i5
=p
i+1
[0040]
b
i1
=sinα
i
e
i
+cosα
i
p
i
,b
i4
=-sinα
i+1
e
i+1
+cosα
i+1
p
i+1

[0041][0042][0043]
其中,
[0044][0045][0046][0047][0048][0049][0050]
w
i1
=-h
i2
ρ
i+1
(p
i+2
)-h
i3
ρ
i+1
(p
i
)+g
i1
p
i+1

[0051]
由此构造出的五次球面b
é
zier曲线r
i
(t)按照如下方式插值关键时刻的旋转运动数据:
[0052]
r
i
(j)=p
i+j
,r
i

(j)=v
i+j
,r
i

(j)=a
i+j

[0053]
其中j=0,1。
[0054]
进一步的,在步骤302中,将步骤301中的五次球面b
é
zier曲线组合成球面样条曲线,包括:
[0055]
对于i=1,2,

,n,将步骤301中的五次球面b
é
zier曲线r
i
(t)通过以下方式组合成球面样条曲线r:[0,n]

s3,
[0056]
r(t):=r
i
(t-i+1),t∈[i-1,i],
[0057]
则样条曲线r(t)是二阶参数连续的,并且在关键时刻插值初始给定的单位四元数序列{p
i
},其中i=1,2,

,n+1。
[0058]
进一步的,在步骤400中,利用步骤300中得到的球面样条曲线r(t),计算刚体上任意一点的旋转运动轨迹,完成刚体旋转运动的设计,包括以下子步骤:
[0059]
步骤401,将球面样条曲线r(t)=(q0(t),q1(t),q2(t),q3(t))转化为旋转矩阵r(t),具体方式如下:
[0060][0061]
其中,r(t)表示刚体在旋转运动过程中t时刻时的姿态;
[0062]
步骤402,在刚体上建立移动坐标系;在刚体运动所在三维欧氏空间中建立世界坐标系;对于刚体上任意一点a,按照如下方式计算旋转运动过程中t时刻点a在世界坐标下的坐标u(t):
[0063][0064]
其中,表示刚体在移动坐标系下的坐标,u(t)表示点a的旋转运动轨迹曲线,由此完成了刚体旋转运动过程的设计。
[0065]
本发明提供的基于球面样条曲线的刚体旋转运动设计方法,与现有技术相比具有以下优点:
[0066]
1、不需要过多的已知条件仅利用姿态数据即可构造出光滑的刚体旋转运动;
[0067]
2、样条曲线具有显式表达式,无需通过非线性方程组求解控制点坐标;
[0068]
3、属于局部构造方法,个别关键时刻旋转运动数据的扰动不会对全局产生影响,提高了运算效率;
[0069]
4、可以通过改变某些关键时刻的旋转角和旋转轴调整旋转运动,实现刚体运动姿态的局部控制,不会对其他位置产生影响,进而降低了操作难度。
附图说明
[0070]
图1为本发明提供的基于球面样条曲线的刚体旋转运动设计方法的实现流程图;
[0071]
图2为刚体中心点旋转运动轨迹的示意图;
[0072]
图3为刚体旋转运动等时间离散化表示的示意图。
具体实施方式
[0073]
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
[0074]
如图1所示,本发明实施例提供一种基于球面样条曲线的刚体旋转运动设计方法,包括以下过程:
[0075]
步骤100,设定运动过程中n个关键时刻刚体的旋转运动的姿态数据。
[0076]
其中,n表示关键时刻的个数,对于整数n≥2,用单位四元数序列{p
i
}表示运动过程中关键时刻刚体的旋转运动的姿态数据,其中i=1,2,

,n+1,令p0=p1,p
n+2
=p
n+1

[0077]
在本实施例中,n取3,将其转换为单位四元数序列:
[0078]
p1=(-0.8095,0.5297,-0.2231,0.1195),
[0079]
p2=(-0.7944,-0.6025,-0.0430,-0.0640),
[0080]
p3=(-0.8353,-0.5258,0.1120,0.1148),
[0081]

[0082]
p0=p1=(-0.8095,0.5297,-0.2231,0.1195),
[0083]
p4=p3=(-0.8353,-0.5258,0.1120,0.1148)。
[0084]
步骤200,拟合旋转运动在每个关键时刻的切向量、单位切向量、曲率向量和二阶共轭向量,包括步骤201至步骤203:
[0085]
步骤201,定义从4维欧氏空间到3维单位球面的切平面的映射。
[0086]
具体包括:将步骤100中设定的单位四元数序列{p
i
}视为3维单位球面s3中的点,其中i=1,2,3。对于任意4维欧氏空间r4中的点p,定义映射如下:
[0087]
ρ
i
(p)=p-<p,p
i
>p
i

[0088]
其中,表示球面s3在点p
i
处的切平面。
[0089]
步骤202,拟合旋转运动在关键时刻的切向量和单位切向量。
[0090]
具体过程:对于i=1,2,3,令
[0091][0092]
拟合旋转运动在关键时刻的切向量v
i
,具体公式如下:
[0093]
v
i
=ρ
i
(p
i+1-p
i-1
);
[0094]
拟合旋转运动在关键时刻的单位切向量e
i
,具体公式如下:
[0095][0096]
步骤203,拟合旋转运动在关键时刻的曲率向量和二阶共轭向量;
[0097]
具体过程:对于i=1,2,3,拟合旋转运动在关键时刻的曲率向量a
i
,具体公式如下:
[0098]
a
i
=λ
i
(p
i+1-2p
i
+p
i-1
),
[0099]
其中
[0100][0101]
拟合旋转运动在关键时刻的二阶共轭向量c
i
=a
i-<a
i
,p
i
>p
i
,具体公式如下:
[0102]
c
i
=λ
i
ρ
i
(p
i+1
)+λ
i
ρ
i
(p
i-1
)。
[0103]
步骤300,基于步骤200拟合出的旋转运动数据,利用五次球面b
é
zier曲线(贝塞尔曲线)构建二阶参数连续的球面样条曲线,包括步骤301至步骤302:
[0104]
步骤301,计算b
é
zier曲线的控制顶点。
[0105]
具体过程:对于i=1,2,令
[0106]
ε
i
=<p
i+1
+p
i-1
,e
i
>,
[0107]
通过以下公式计算五次球面b
é
zier曲线r
i
:[0,1]

s3的控制顶点b
ik
(k=0,1,

,5):
[0108]
b
i0
=p
i
,b,
i5
=p
i+1
[0109]
b
i1
=sinα
i
e
i
+cosα
i
p
i
,b
i4
=-sinα
i+1
e
i+1
+cosα
i+1
p
i+1

[0110][0111][0112]
其中,
[0113][0114][0115][0116][0117][0118][0119][0120]
由此构造出的五次球面b
é
zier曲线r
i
(t)按照如下方式插值关键时刻的旋转运动数据:
[0121]
r
i
(j)=p
i+j
,r
i

(j)=v
i+j
,r
i

(j)=a
i+j

[0122]
其中j=0,1。
[0123]
步骤302,将步骤301中的五次球面b
é
zier曲线组合成球面样条曲线;
[0124]
具体过程:将步骤301中的五次球面b
é
zier曲线r1(t)和r2(t)通过以下方式组合成球面样条曲线r:[0,2]

s3,
[0125][0126]
则球面样条曲线r(t)是二阶参数连续的,并且在关键时刻t=i插值初始给定的单位四元数序列{p
i
},其中i=1,2,3。
[0127]
步骤400,利用步骤300中得到的球面样条曲线r(t),计算刚体上任意一点的旋转运动轨迹,完成刚体旋转运动的设计,包括以下过程:
[0128]
步骤401,将球面样条曲线r(t)=(q0(t),q1(t),q2(t),q3(t))转化为旋转矩阵r
(t),具体方式如下:
[0129][0130]
其中,r(t)表示刚体在旋转运动过程中t时刻时的姿态。
[0131]
步骤402,在刚体上建立移动坐标系;在刚体运动所在三维欧氏空间中建立世界坐标系;对于刚体上任意一点a,按照如下方式计算旋转运动过程中t时刻点a在世界坐标下的坐标u(t):
[0132][0133]
其中,表示刚体在移动坐标系下的坐标,u(t)表示点a的旋转运动轨迹曲线,如图2所示,由此完成了刚体旋转运动过程的设计,如图3所示。
[0134]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1