문제

iPhone의 방향을 45도 단위로 감지하고 싶습니다. 이상적으로 나는 모든 축을 따라 방향 각도를 얻을 수 있기를 원합니다.

내가해야 할 감지는 방향이 바뀔 때 iPhone의 트리즘이 화면의 현재 하단 위치를 향해 화살표를 깜박이는 방법과 유사합니다.

나는 코딩 된 것이 있지만 가속도계 판독 값이 어떻게 작동하는지 이해하지 못하고 올바른 방향으로 누드를 사용할 수 있습니다. 내 현재 코드는 현재 각도를 기록하지만 전화가 평평한 경우에도 읽기가 몇 배에 따라 크게 다양합니다.

- (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
도움이 되었습니까?

해결책

당신의 문제는 당신이 사용하고 있다는 것입니다 int 원할 때 변수 float.

제 생각에는 accelerationX 그리고 –y는 인스턴스 변수이어야하므로 다음과 같습니다.

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

당신이 찾고 있던 것을 더 많이 주어야합니다.

다른 팁

그 이유는 로컬 변수를 사용하고 있지만 로컬 변수는 아니기 때문입니다.

다음을 시도하십시오.

인스턴스 변수 선언 :

@interface YourViewControllerClass: UIViewController {
    float accelerationX, accelerationY;
}

...

other declarations

가속도계 대의원의 변수 업데이트 :

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

갑자기 점프하지 않고 더 정확한 결과를 제공해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top