我在accelerometer.Its上做了一个声音应用程序,通过计算加速度计来播放不同的运动声音,我怎样才能找到用户移动的加速度计方向,x轴加或减,y轴加或minus.How,我能在加速度计上找到这个值。
请提供一些说明或帮助代码或项目。
发布于 2009-05-15 10:55:33
您需要执行vector addition并计算2个向量的总和,以获得结果向量。上面的文章解释了计算它的所有常用方法。但是在编程中,你只需要应用Pythagoras定理和Tan theta = b/a
发布于 2009-08-01 16:41:30
我认为你需要磁力仪的方向(至少给你一个方向,你总是可以比较),以及使用上面提到的矢量数学。这篇文章更好地解释了如何添加向量(第一个用来掩盖最可能的情况,只是说它很“难”)……
http://blog.dotphys.net/2008/09/basics-vectors-and-vector-addition/
发布于 2009-08-01 17:24:53
你必须使用向量来表示它,下面有一个委托方法,它详细说明了你需要做什么。
现在我还没有看太多的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。
https://stackoverflow.com/questions/868012
复制相似问题