Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中四元数到欧拉角和欧拉角到四元数_C_3d_Rotation_Quaternions_Euler Angles - Fatal编程技术网

C中四元数到欧拉角和欧拉角到四元数

C中四元数到欧拉角和欧拉角到四元数,c,3d,rotation,quaternions,euler-angles,C,3d,Rotation,Quaternions,Euler Angles,我一直在编写这段代码来检查euler角度和四元数,但它没有正确运行(或者可能我不理解旋转): 或例如x 90ºy 90ºz 90º x=3.141593 y=1.570796 z=1.570796 sx = 1.000000 sy = 0.707107 sz = 0.707107 cx = -0.000000 cy = 0.707107 cz = 0.707107 Quaternion -> (0.500000, 0.500000, -0.500000, -0.500000) reconv

我一直在编写这段代码来检查euler角度和四元数,但它没有正确运行(或者可能我不理解旋转):

或例如x 90ºy 90ºz 90º

x=3.141593 y=1.570796 z=1.570796
sx = 1.000000 sy = 0.707107 sz = 0.707107 cx = -0.000000 cy = 0.707107 cz = 0.707107
Quaternion -> (0.500000, 0.500000, -0.500000, -0.500000)
reconversion euler x=270.00 y=90.00 z=0.00
x=1.570796 y=1.570796 z=1.570796
sx = 0.707107 sy = 0.707107 sz = 0.707107 cx = 0.707107 cy = 0.707107 cz = 0.707107
Quaternion -> (0.707107, 0.707107, 0.000000, 0.000000)
recover euler x=180.00 y=90.00 z=0.00

您使用的算法有一个域,该域仅位于区间[0,pi/2]的第一象限。或者,因为您希望输入以度为单位,介于0(零)之间包容性和90度互斥性。

那么,调试器告诉你什么呢?旁注:在可以使用函数的地方不要使用宏。奇怪的是,为什么要使用
double
函数,比如
cos()
sin()
float
而不是
sinf()
cosf()
?或者可能在整个过程中使用
double
?使用经验证的源
x=1.570796 y=1.570796 z=1.570796
sx = 0.707107 sy = 0.707107 sz = 0.707107 cx = 0.707107 cy = 0.707107 cz = 0.707107
Quaternion -> (0.707107, 0.707107, 0.000000, 0.000000)
recover euler x=180.00 y=90.00 z=0.00