0

我试图找出 GLKQuaternions 的一个奇怪问题。尝试打印四元数的信息时,w = 0 的值每次。虽然,在调试器区域,它清楚地表明 -4.37114e-08 存储在该值中。我不知道为什么。我的印刷声明说:

NSLog(@"\n\nSLERP: Animation.Current:x:%f,y:%f,z:%f,w:%f and Animation.End:x:%f,y:%f,z:%f,w:%f", animation.Current.x, animation.Current.y, animation.Current.z, animation.Current.w, animation.End.x, animation.End.y, animation.End.z, animation.End.w);

我的结构是

typedef struct{
    GLKQuaternion Start; //starting orientation
    GLKQuaternion End; //ending orientation
    GLKQuaternion Current; //current interpolated orientation
    float Elapsed; //time span in seconds for a slerp fraction between 0 and 1
    float Duration; //time span in seconds for a slerp fraction between 0 and 1
}Animation; //enables smooth 3D transitions

调试器显示以下内容:

在此处输入图像描述

请注意,animation.End.w = -4.37114e-08 同时在调试器中声明它 = 0。我在打印语句之后设置了断点。有谁知道这会导致什么?我认为它干扰了我与 w 变量相关的计算。

4

1 回答 1

2

%f将值输出到小数点后 6 位。

一个示例,用于%.9f输出到小数点后 9 位。显然,-4.37114 * 10^-08将需要超过 6 个小数位,因此您需要更改 NSLog 中的格式。

于 2013-03-26T02:29:50.820 回答