首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个UIAccelerationValue相加?

问将两个UIAccelerationValue相加?
EN

Stack Overflow用户
提问于 2013-05-06 13:01:21
回答 2查看 197关注 0票数 0

我不确定这是不是一个愚蠢的问题,所以请在这里容忍我。不管怎样,我有两个UIAccelerationValue's。当我逐个NSLog他们的结果时,我得到的值分别如下:

代码语言:javascript
复制
1. Value: -0.016186

2. Value2: -0.033460

但是,当我将两个UIAccelerationValue's相加或相减时,得到的值如下所示:

代码语言:javascript
复制
Value: -571.142049
Value: -1085.174017
Value: -2061.834754
Value: -3917.490156
Value: -7443.235420
Value: -14142.151420

正如你所看到的,这些值一直在以指数级增长。

无论如何,我怎么能简单地将两个UIAccelerationValues相加或相减,而没有现在得到的结果呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-15 22:55:57

我认为你是在存储加/减的结果,并且一遍又一遍地加/减,因此增加了很大的值。

UIAccelerationValue只是一个double (参见UIAccelerome.h):

代码语言:javascript
复制
typedef double UIAccelerationValue;

通过以下示例,您将获得预期的输出:

代码语言:javascript
复制
UIAccelerationValue xOne = -0.016186;
UIAccelerationValue xTwo = -0.033460;

NSLog(@"%f", xOne + xTwo); // prints out -0.049646
NSLog(@"%f", xOne - xTwo); // prints out 0.017274
票数 3
EN

Stack Overflow用户

发布于 2013-05-16 13:40:00

我不是UIAcceleration方面的专家,但这里有一个来自示例代码的示例。希望能有所帮助。

代码语言:javascript
复制
#define kAccelerometerFrequency        50.0 //Hz
#define kFilteringFactor 0.1


UIAccelerationValue gravX;
UIAccelerationValue gravY;
UIAccelerationValue gravZ;
gravX = (acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor));
gravY = (acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor));
gravZ = (acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor));

UIAccelerationValue accelX = acceleration.x - ( (acceleration.x * kFilteringFactor) + (gravX * (1.0 - kFilteringFactor)) );

UIAccelerationValue accelY = acceleration.y - ( (acceleration.y * kFilteringFactor) + (gravY * (1.0 - kFilteringFactor)) );
UIAccelerationValue accelZ = acceleration.z - ( (acceleration.z * kFilteringFactor) + (gravZ * (1.0 - kFilteringFactor)) );
accelX *= 9.81f;
accelY *= 9.81f;
accelZ *= 9.81f;
accelX = [self tendToZero:accelX];
accelY = [self tendToZero:accelY];
accelZ = [self tendToZero:accelZ];

UIAccelerationValue vector = sqrt(pow(accelX,2)+pow(accelY,2)+pow(accelZ, 2));
UIAccelerationValue acce = vector - prevVelocity;
UIAccelerationValue velocity = (((acce - prevAcce)/2) * (1/kAccelerometerFrequency)) + prevVelocity;

NSLog(@"X %g Y %g Z %g, Vector %g, Velocity %g",accelX,accelY,accelZ,vector,velocity);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16392224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档