STK Component 矢量几何工具系列--坐标轴(Axes)转换基础
来源:互联网 发布:按键精灵抓取网页数据 编辑:程序博客网 时间:2024/05/19 23:13
前言
STK组件包含一个全功能的矢量几何工具库,用于创建矢量,坐标轴,点和坐标系等,以及计算每个参数如何随时间变化。 例如,Point可以表示由轨道积分器计算的卫星位置,然后可以计算卫星在任何已定义坐标系中的位置、速度;Axes可以表示运动的卫星的轨道坐标轴,然后可以计算此轨道坐标轴相对任何坐标轴的转换矩阵。
STK Component矢量几何工具库与STK桌面软件的Vector Geomentry Tool是对应的。 通过Reflector工具反编译Component类库,扒一扒其内部的运行机制,加深我们对此工具库的理解,以便更好的使用Component类库功能为我所用。
本文谈谈坐标轴(Axes)转换的基础知识,注意不是坐标系,坐标系=坐标轴+坐标原点。也就是说坐标轴是可以平移的,任何两个坐标轴之间的转换关系只涉及到它们的XYZ轴旋转关系,而与它们在什么地方没有关系。例如,讨论地球J2000系的坐标轴和月球惯性系的坐标轴时,可以将两个坐标系的原点重合,然后讨论两者坐标轴的旋转关系。
在STK Component中,有关坐标系旋转的类在命名空间 AGI.Foundation.Coordinates中的。
注意,以下讨论中,由于两个坐标轴已重合,所以常常说成坐标系旋转如何如何,实际上还是两个坐标轴,请读者自行区分。
最常用的旋转表示方法便是欧拉角和四元数,下面分别叙述。
注意,这里介绍的转换定义、过程、顺序等就是STK Component里所采用的,所以在使用Component里相关类时,如果不记得其转换定义、过程及顺序时,可参考以下说明!
欧拉旋转
下图中,蓝色坐标系表示旧坐标系(也可以叫原坐标系),红色坐标系表示新坐标系;新坐标系是原坐标系绕其Z轴旋转
新旧坐标系中的坐标关系如下:
其中,
绕X、Y轴旋转的转换矩阵过程同上类似,下面直接给出绕原坐标系X、Y、Z轴旋转的转换矩阵:
其旋转方向符合右手螺旋法则,即逆时针旋转为正方向。另外坐标旋转矩阵具备如下性质:
任何两个坐标轴的旋转关系都可以按照一定的坐标轴顺序(例如先x、再y、最后z)、每个轴旋转一定角度来实现,实际上是一系列坐标轴旋转的组合。
在上图旋转中,首先绕原坐标系(蓝色坐标轴)的Z轴旋转
注意,上述旋转过程中,每次旋转都是相对前面最新的坐标系为参考的!!
上述欧拉转序对应的新旧坐标系的关系如下式:
从原坐标系到新坐标系的旋转矩阵
当然对于任意两个坐标轴,其转序并不仅仅为313,也可以是321、123等等,一共有12种可能性。
注意,我们在说两个坐标轴的欧拉转换时,一定要确定是什么转序(是313还是321等等),以及对应的欧拉角!!
四元数(Quaternion)
四元数能够很方便的刻画刚体绕任意轴的旋转。四元数是一种高阶复数,四元数q表示为:
其中,i,j,k满足:
由于i,j,k的性质和笛卡尔坐标系三个轴叉乘的性质很像,所以可以将四元数写成一个向量和一个实数组合的形式:
可以推导出四元数的一些运算性质,包括:
四元数乘法
共轭四元数
四元数的平方模
四元数的逆
四元数可以看做是向量和实数的一种更加一般的形式,向量可以视作为实部为0的四元数,而实数可以是作为虚部为0的四元数。上述四元数的运算性质也是实数或向量的运算性质的更一般的形式.
任何两个坐标轴之间的转换除了可以用连续三个欧拉旋转实现外,还可以通过一次旋转完成。可以证明,总可以找到一个旋转轴和一个旋转角度,使得原坐标轴绕此旋转轴旋转一定的角度与新坐标轴重合。定义此旋转轴在原坐标系中的单位矢量坐标为
在考虑连续坐标轴旋转时,同欧拉旋转类似,采用四元数左乘,如下连续三个旋转:
上述转换过程为:
- 从原坐标系转到新坐标系1,用四元数
q1 表示两者的旋转关系; - 从新坐标系1转到新坐标系2,用四元数
q2 表示两者的旋转关系; - 从新坐标系2转到最终的新坐标系,用四元数
q3 表示两者的旋转关系; - 从原坐标系到新坐标系的旋转关系用四元数
q 表示!
小结
STK Component计算坐标转换时,广泛采用欧拉转换与四元数,涉及到转换定义、顺序如上描述。切记,在连续转换中,无论是欧拉转换还是四元数,都是左乘转换矩阵或者四元数的!!
实际应用中,还有一种刚体的转换,与本文描述的转换过程刚好相反,读者注意区别。在使用Component中类库计算时,请采用本文介绍的转换定义及顺序!
采用欧拉转序及四元数的旋转总结如下(欧拉旋转中,欧拉转序为313):
- STK Component 矢量几何工具系列--坐标轴(Axes)转换基础
- STK Component 矢量几何工具系列--坐标轴(Axes)
- 在STK里使用矢量工具
- XPath Axes(坐标轴)
- XPath Axes(坐标轴)
- XPath Axes(坐标轴)
- XPath Axes(坐标轴)XPath Axes(坐标轴)
- matlab坐标轴axes显示问题
- STK Component是什么
- [D3.js] SVG-Axes(坐标轴)
- Mapbox系列之矢量切片工具Tippecanoe
- 计算几何基础——矢量和叉积
- 计算几何基础——矢量和叉积
- 计算几何基础——矢量和叉积
- COPY 计算几何基础——矢量和叉积
- XPATH的一些资料(XPath Axes(坐标轴))
- Extjs学习 图表Chart 坐标轴组件详解(axes)
- matlab坐标轴axes对象句柄消失的解决办法
- opencv稠密矩阵基本概念
- Matlab与机器学习-- 数据的归一化
- 如何设置eclipse左边显示包结构及包的显示方式
- 如何教计算机认识手写数字(上)
- JVM-内存模型
- STK Component 矢量几何工具系列--坐标轴(Axes)转换基础
- Java 泛型
- oj第十二周训练——汉诺塔
- Cocos2dx3.0 回调函数写法
- 98. Validate Binary Search Tree
- 今天就要开始学习linux建站了,好好加油!
- 开发中常用英文单词
- 北京赛车游戏杀号技巧
- 解决JSP中的各种乱码问题