2

Wolfram Alphaは、それq=(7.0711e-01,1.5272e-16,-7.0711e-01,0e+00)が1回転であり、その結果は、クォータニオンの生成に使用されるデータのコンテキストで意味をなします(いくつかの単純なテストデータの分析最小二乗点ベースの登録...)。

私のコードは私に別の答えを与えます、しかし私は理由について困惑しています。私は自分のコードを数回調べましたが、何も見つかりませんでした。それは私が睡眠を必要としているだけかもしれません、そしてそれは明日非常に明白かもしれません、しかし私はよくわかりません。

コード:

// given a column vector q known to be a unit quaternion
double xx = q[0]*q[0], xy = q[0]*q[1], xz = q[0]*q[2], xw = q[0]*q[3];
double yy = q[1]*q[1], yz = q[1]*q[2], yw = q[1]*q[3];
double zz = q[2]*q[2], zw = q[2]*q[3];

arma::mat rotation;

// yes, I know I could get rid of some of these multiplications
rotation << (1 - 2 * yy - 2 * zz) << (2 * xy - 2 * zw) << (2 * xz + 2 * yw)
     << arma::endr
     << (2 * xy + 2 * zw) << (1 - 2 * xx - 2 * zz) << (2 * yz - 2 * xw)
     << arma::endr
     << (2 * xz - 2 * yw) << (2 * yz + 2 * xw) << (1 - 2 * xx - 2 * yy)
     << arma::endr;

// and now I have the wrong result

私の結果:

-2.2204e-16   2.1598e-16  -1.0000e+00
 2.1598e-16  -1.0000e+00  -2.1598e-16
-1.0000e+00  -2.1598e-16   2.2204e-16

WolframAlphaの結果

4

1 に答える 1

1

wolfram alphaにはw、x、y、zオーダーを使用し、コードにはx、y、z、wを使用します。

http://www.wolframalpha.com/input/?i=quaternion%280e%2B00%2C7.0711e-01%2C1.5272e-16%2C-7.0711e-01%29

于 2012-04-19T05:26:42.113 に答える