0

これがばかげた質問かどうかはわかりませんので、ここでご容赦ください。とにかく私は2つ持っていUIAccelerationValue'sます。結果を個別NSLogに取得すると、それぞれ次のような値が得られます。

1. Value: -0.016186

2. Value2: -0.033460

ただし、この 2 つを加算または減算するUIAccelerationValue'sと、次のような値が得られます。

Value: -571.142049
Value: -1085.174017
Value: -2061.834754
Value: -3917.490156
Value: -7443.235420
Value: -14142.151420

ご覧のとおり、値は指数関数的に増加し続けています。

とにかく、UIAccelerationValues私が今得ている結果なしで、どうすれば単純に2つを足したり引いたりすることができますか?

4

2 に答える 2

0

私は UIAcceleration の専門家ではありませんが、サンプル コードの例を次に示します。それが役に立てば幸い。

#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);
于 2013-05-16T05:40:00.453 に答える