wordpress目录分站,网站获取用户,旅游网站开发费用,wordpress wp rewrite作者#xff1a;Yang Eninala 链接#xff1a;https://www.zhihu.com/question/23005815/answer/33971127 来源#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权#xff0c;非商业转载请注明出处。
根据我的理解#xff0c;大多数人用汉密尔顿四元数就只…作者Yang Eninala 链接https://www.zhihu.com/question/23005815/answer/33971127 来源知乎 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。
根据我的理解大多数人用汉密尔顿四元数就只是做三维空间的旋转变换我反正没见过其他用法。那么你不用学群论甚至不用复习线性代数看我下面的几张图就可以了。
首先定义一个你需要做的旋转。旋转轴为向量旋转角度为右手法则的旋转。如下图所示 此图中, 那么与此相对应的四元数下三行式子都是一个意思只是不同的表达形式 这时它的共轭下三行式子都是一个意思只是不同的表达形式
如果你想算一个点在这个旋转下新的坐标,需要进行如下操作 1.定义纯四元数 2.进行四元数运算 3.产生的一定是纯四元数也就是说它的第一项为0有如下形式 4.中的后三项就是 这样就完成了一次四元数旋转运算。
同理如果你有一个四元数 那么它对应一个以向量为轴旋转角度的旋转操作右手法则的旋转。
*********************************************************************************************************** 如果你想对四元数有着更深入的了解请往下看。
四元数由汉密尔顿发明这一发明起源于十九世纪的某一天。在这一天早上汉密尔顿下楼吃早饭。这时他的儿子问他“爸爸我们能够对三元数组triplet可以理解为三维向量做乘法运算么”汉密尔顿说“不行我只能加减它们。”
这时来自21世纪的旁白旁先生说“大家快来看十九世纪的数学家有多二连内积和外积都不是知道。”
十九世纪的汉密尔顿也许确实不知道内积和外积但是他知道他想要的三维向量乘法要比内积和外积运算“高大上”很多。这一乘法运算要满足下列四条性质 1.运算产生的结果也要是三维向量 2.存在一个元运算任何三维向量进行元运算的结果就是其本身 3.对于任何一个运算都存在一个逆运算这两个运算的积是元运算 4.运算满足结合律
换而言之汉密尔顿想定义的不是一个简单的映射关系而是一个群后来我们知道四元数所在群为S3而四元数所代表的三维旋转是SO(3)前者是后者的两倍覆盖内积连性质1都不满足外积不满足性质3。
汉密尔顿先生就这么被自己儿子提出的问题难倒了。经历了无数个日日夜夜他绞尽脑汁也没想明白这个问题。终于有一天1843年的一天汉密尔顿先生终于意识到了自己所需要的运算在三维空间中是不可能实现的但在四维空间中是可以的他是如此的兴奋以至于把四元数的公式刻在了爱尔兰的一座桥上。
旁白“WTF我让你讲三维物体的旋转你给我扯到四维空间上去。”
不加说明以下所说四元数全为单位四元数 其实四元数有四个变量完全可以被看作一个四维向量。单位四元数norm1则存在于四维空间的一个球面上。四元数乘以四元数其实看作1对进行左旋转或者2对进行右旋转。所以从始至终四元数定义的都是四维旋转而不是三维旋转任意的四维旋转都可以唯一的拆分为一个左旋转和一个右旋转表达出来就是。这里我们对四元数四维向量进行了一个左旋转和一个右旋转。结果当然是一个四元数符合性质1。这个运算也同时符合性质234。
好了说完了四维旋转我们终于可以说说三维旋转了。说白了三维旋转就是四维旋转的一个特例就像二维旋转是三维旋转的一个特例一样。说是特例其实不准确准确的说是一个子集或者subgroup。为了进行三维旋转运算汉密尔顿首先在四维空间里划出了一块三维空间。汉密尔顿定义了一种纯四元数pure quaternion其表达式为。纯四元数第一项为零它存在于四维空间的三维超平面上与三维空间中的三维向量一一对应。然后就有了我们常见的这种左乘单位四元数右乘其共轭的表达式。我真心不知道汉密尔顿是怎么想出来的不过回过头来看这个运算形式是为了限制其运算结果所在的空间。简单的说当对一个三维向量进行三维旋转后我们希望得到的是一个三维向量。如果你真能得到一个四维向量就不敢自己在家转圈圈了吧转着转着就进入四次元了那么这个左乘单位四元数右乘其共轭的运算保证了结果是一个在三维超平面上中的纯四元数。
把左乘和右乘表达为矩阵形式会让我们看的更清楚一些。依照的定义的矩阵形式为 很明显前面的矩阵虽然是一个4x4的四维旋转矩阵但是它只是在右下角3x3的区域内和一个单位矩阵有所不同。所以说它是一个限制在三维超平面上的四维旋转。如果表达式右边不是共轭而是任意四元数那么我们所作的就是一个很普通的四维旋转。如果只是左乘一个单位四元数右边什么都不乘那么我们得到的是四维旋转的一个子集这个子集并不能保证结果限制在三维超平面上。如果只右乘不左乘也是一样一样的。
说了这么多对于坚持到最后的你上图一幅以表感谢。 其实这张图解释了一个长久的疑问。为什么四元数里用的是而不是。这是因为做的就是一个的旋转而也做了一个的旋转。我们进行了两次旋转而不是一次这两次旋转的结果是一个旋转角为的旋转。
编辑于 2015-03-08