Wolfram Alpha mi to povie q=(7.0711e-01,1.5272e-16,-7.0711e-01,0e+00)
je jedna rotácia a výsledok dáva zmysel v kontexte údajov použitých na generovanie kvartéru (analytická najmenšia štvorcová bodová registrácia na niektorých jednoduchých testovacích údajoch ...).
Môj kód mi dáva inú odpoveď, ale ja sompauza, prečo. Niekoľkokrát som bol nad svojím kódom, ale nič som si nevšimol. To by mohlo byť len ja potrebujem spať, a to by mohlo byť super zrejmé zajtra, ale ja si nie som istý.
kód:
// 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
Môj výsledok:
-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
odpovede:
1 pre odpoveď č. 1Použite w, x, y, z pre wolfram alfa a x, y, z, w pre váš kód.
http://www.wolframalpha.com/input/?i=quaternion%280e%2B00%2C7.0711e-01%2C1.5272e-16%2C-7.0711e-01%29