Что именно измеряет акселерометр iPhone? - PullRequest
10 голосов
/ 15 февраля 2012

В документации apple для класса UIAcceleration написано,

"Когда устройство лежит неподвижно спиной на горизонтальной поверхности, каждое событие ускорения имеет приблизительно следующие значения:
х: 0
у: 0
z: -1
"

Теперь я в замешательстве! Как может ускорение быть ненулевым, когда вы четко говорите, что «устройство неподвижно»?

UPDATE

Судя по ответам, я думаю, что это следует называть чем-то вроде «силомера» или «гравитометра», а не акселерометра!

Ответы [ 6 ]

12 голосов
/ 15 февраля 2012

Вы получите -1 на оси Z, потому что гравитация действует на устройство, применяя постоянное ускорение 1G.Я предполагаю, что вам нужно пользовательское ускорение, которое вы можете получить от объекта DeviceMotion , используя обработчик движения устройства, а не обработчик ускорения.Свойство userAcceleration отфильтровывает влияние гравитации на устройство и показывает только, насколько пользователь ускоряет его.

7 голосов
/ 17 февраля 2012

Я нашел ответ [в Справочном руководстве CoreMotion, спасибо bensnider :

Акселерометр измеряет сумму двух векторов ускорения: силы тяжести и пользовательского ускорения.Ускорение пользователя - это ускорение, которое пользователь передает устройству.

6 голосов
/ 15 февраля 2012

Лучшие ответы вы найдете в таблице используемого акселерометра (LIS302DL).

5 голосов
/ 15 февраля 2012

Он измеряет силу тяжести. Единица измерения выбирается таким образом, чтобы сила тяжести, 9,81 м / с ^ 2, равнялась 1 единице. Знак рассказывает, как направлена ​​ось телефона. Другими словами, что телефон считает вниз.

Телефон измеряет 0 как ускорение в свободном падении. Я не знаю, сколько вы хотите бросить свой телефон вверх и вниз, чтобы проверить его:)

2 голосов
/ 15 февраля 2012

Когда вы сидите, гравитация притягивает вас к вашему стулу. Если бы не кресло или земля в этом отношении, вы бы упали с ускорением около 9,8 м / с ^ 2. Чтобы кресло не позволяло вам упасть, оно должно действовать с силой в противоположном направлении, по крайней мере, с тем же значением.

Акселометр показывает значение силы натяжения, и это трехмерный вектор. В этом случае он направлен прямо вниз. И данное значение выражается в G, единицах ускорения силы тяжести, умноженных на это значение.

0 голосов
/ 06 января 2015

Отвечающие продолжают упускать правильную формулировку, которая должна установить ее прямо для вас ... Устройство «замирает» только относительно вас.Это на самом деле не лежит на месте вообще.http://en.wikipedia.org/wiki/Centripetal_force гравитации дает ему (и вам) центростремительное ускорение.Это реально, это то, что удерживает вас от полета по касательной, и это то, что покорно показывает акселерометр.(Земля не является чем-то особенным - мы вращаемся вокруг Солнца и т. Д. И т. Д., Центростремительные ускорения которых намного меньше, но все они будут показаны достаточно чувствительным акселерометром.)

...