#iphone #objective-c #xcode #performance #accelerometer
#iPhone #objective-c #xcode #Производительность #акселерометр
Вопрос:
Я просто хотел знать, как я мог бы получить скорость, с которой UIAccelerometer
движется, чтобы я знал, как быстро нужно перемещать UIView
.
Комментарии:
1. Что вы определяете как «скорость» акселерометра? Скорость, с которой движется устройство? Наклон? Если вы пытаетесь определить скорость, с которой движется устройство, возможно, разумно использовать гироскоп. Помните, что акселерометр измеряет ускорение, и это не всегда точно.
Ответ №1:
О боже, это немного сложно.
Акселерометр не показывает вам скорость, но, как мы все знаем, это ускорение. Но вы можете это выяснить (но это не так просто).
Нам нужно использовать некоторые простые физические вычисления. Используя V (сейчас) = V (предыдущее) ускорение (с помощью акселерометра) * время (секунды с момента последнего считывания);
В коде вам нужно будет сделать несколько вещей.
- Вы должны определить, когда вы не двигаетесь. Например, оставьте устройство неподвижным на секунду.
- Когда устройство движется, вы знаете, что оно стартовало с начальной скоростью 0 м / с
- Хорошо, давайте представим, что это действительно просто, и мы проверяем акселерометр только каждые 1 секунду (позже, возможно, 10 раз в секунду.
- Хорошо, мы получаем первое значение в 1 секунду, а ускорение составило 2.
- Таким образом, наша скорость через 1 секунду после отдыха будет равна = 0 2*1 = 2 м / с
- ОТЛИЧНО, теперь прошла еще одна секунда (общее время прохождения составляет 2 секунды), скорость ускорения 2,5 теперь будет равна V (сейчас) = Vpervious (2) T (прошло с момента предыдущего считывания) 1 * 2.5 = 2 1*2.5 = 4.5 м / с
Помните, что T здесь — это время, прошедшее с момента последнего считывания, а не общее время.
Если я прав (кто-нибудь может меня поправить, акселерометр возвращает фактическое значение a в наших уравнениях). Так что вы должны быть в состоянии подключить это.
Кроме того, акселерометр будет выдавать вам 3 разных значения (x, y, z). Так что, может быть, сначала начните с одного направления, а затем, возможно, y для другого.
Хотелось бы знать, работает ли у вас это. Джон.