Как я могу узнать направление акселерометра? - PullRequest
1 голос
/ 15 мая 2009

Я делаю звуковое приложение на акселерометре. Он воспроизводит другой звук для движения, вычисляя значение акселерометра. Но как я могу найти направление акселерометра, в котором пользователь перемещает ось X плюс или минус и ось Y плюс или минус? Я нашел это значение на акселерометре.

Пожалуйста, дайте несколько инструкций или код помощи или проект.

Ответы [ 3 ]

1 голос
/ 01 августа 2009

Я думаю, вам понадобится направление магнитометра (по крайней мере, чтобы дать вам направление, с которым вы всегда можете сравнить), а также использование векторной математики, упомянутой выше. Эта статья лучше объясняет, как добавлять векторы (первая из них закрывает наиболее вероятный случай, просто говоря, что это «сложно») ...

http://blog.dotphys.net/2008/09/basics-vectors-and-vector-addition/

1 голос
/ 01 августа 2009

Вы должны представить это с помощью векторов, ниже есть метод делегата, который подробно описывает, что вам нужно сделать.

Сейчас я еще не слишком много смотрю на API, но, думаю, ваш вектор направления возвращается вам из акселерометра.

Существует делегат метод, который возвращает значения, которые вам понадобятся. Следующий код может помочь из учебника, который вы должны посмотреть здесь :

- (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];
}

Существует также легко читаемая статья, которая ясно объясняет это здесь вместе с примером кода .

1 голос
/ 15 мая 2009

Вам необходимо выполнить сложение векторов и вычислить сумму двух векторов, чтобы получить результирующий вектор. Выше статья объясняет все распространенные методы его расчета. Но, делая это программно, вам просто нужно применить теорему Пифагора и Tan theta = b / a

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...