gpt4 book ai didi

iphone - 检测 iPhone 屏幕方向

转载 作者:行者123 更新时间:2023-12-03 18:54:26 25 4
gpt4 key购买 nike

我想要以 45 度增量检测 iPhone 的方向。理想情况下,我希望能够获得沿任何轴的方向角。

我需要做的检测类似于 iPhone 的 Trism 在方向改变时向屏幕当前底部位置闪烁箭头的方式。

我有一些代码,但真的不明白加速度计读数是如何工作的,并且可以在正确的方向上使用轻推。我当前的代码记录当前角度,但即使手机平放,我也会得到每秒几次剧烈变化的读数。

- (void) checkOrientation:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
{
int accelerationX = acceleration.x * kfilteringFactor + accelerationX * (1.0 - kfilteringFactor);
int accelerationY = acceleration.y * kfilteringFactor + accelerationY * (1.0 - kfilteringFactor);

float currentRawReading = (atan2(accelerationY, accelerationX)) * 180/M_PI;
NSLog(@"Angle: %f",currentRawReading);
}

手机平放时的日志示例:

2009-06-16 17:29:07.987 [373:207] Angle: 0.162292
2009-06-16 17:29:07.994 [373:207] Angle: 179.838547
2009-06-16 17:29:08.014 [373:207] Angle: 179.836182
2009-06-16 17:29:08.032 [373:207] Angle: -90.000000
2009-06-16 17:29:08.046 [373:207] Angle: 179.890900
2009-06-16 17:29:08.059 [373:207] Angle: -90.000000
2009-06-16 17:29:08.074 [373:207] Angle: 179.917908
2009-06-16 17:29:08.088 [373:207] Angle: -179.950424
2009-06-16 17:29:08.106 [373:207] Angle: 90.000000
2009-06-16 17:29:08.119 [373:207] Angle: 90.000000
2009-06-16 17:29:08.134 [373:207] Angle: -179.720245

最佳答案

我认为你的问题是当你想要float时你使用int变量。

我认为 accelerationX 和 –Y 应该是实例变量,因此:

accelerationX = acceleration.x * kfilteringFactor + accelerationX * (1.0 - kfilteringFactor);
accelerationY = acceleration.y * kfilteringFactor + accelerationY * (1.0 - kfilteringFactor);

应该给你更多你想要的东西。

关于iphone - 检测 iPhone 屏幕方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/999686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com