我在加速度计上做声音应用。它通过计算加速度计值来播放不同的运动声音。但是我怎样才能找到用户移动x轴加上或减去和y轴正负的加速度计方向。如何我在加速度计上找到了这个值。
请提供一些指导或帮助代码或项目。
答案 0 :(得分:1)
您需要执行vector addition并计算2个向量的求和以获得结果向量。上面的文章解释了计算它的所有常用方法。但是以编程方式执行它只需要应用毕达哥拉斯定理和Tan theta = b / a
答案 1 :(得分:1)
我认为你需要磁力计方向(至少给你一个你可以随时比较的方位),以及使用上面提到的矢量数学。这篇文章更好地解释了如何添加向量(第一个通过说“硬”来掩盖最可能的情况)...
http://blog.dotphys.net/2008/09/basics-vectors-and-vector-addition/
答案 2 :(得分:1)
你必须使用向量来表示它,下面有一个委托方法,详细说明你需要做什么。
现在我还没有看过太多的API,但我相信你的方向向量会从加速度计返回给你。
有一个委托方法,它返回您需要的值。 以下代码可能会对您应该take a look at here:
的教程提供帮助- (void)acceleratedInX:(float)xx Y:(float)yy Z:(float)zz
{
// Create Status feedback string
NSString *xstring = [NSString stringWithFormat:
@"X (roll, %4.1f%%): %f\nY (pitch %4.1f%%): %f\nZ (%4.1f%%) : %f",
100.0 - (xx + 1.0) * 100.0, xx,
100.0 - (yy + 1.0) * 100.0, yy,
100.0 - (zz + 1.0) * 100.0, zz
];
self.textView.text = xstring;
// Revert Arrow and then rotate to new coords
float angle = atan2(xx, yy);
angle += M_PI / 2.0;
CGAffineTransform affineTransform = CGAffineTransformIdentity;
affineTransform = CGAffineTransformConcat( affineTransform, CGAffineTransformMakeRotation(angle));
self.xarrow.transform = affineTransform;
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
[self acceleratedInX:acceleration.x Y:acceleration.y Z:acceleration.z];
}
还有一篇易于理解的文章可以清楚地解释here along with sample code。