Координатная система акселерометра организована следующим образом. Ось X начинается в нижнем левом углу устройства и направлена вдоль нижней стороны устройства вправо. Ось Y также начинается в нижнем левом углу устройства, но направлена вдоль левой стороны вверх. Ось Z начинается в нижнем левом углу и направлена в пространство вверх от устройства. Описанная координатная система показана.
Эта координатная система отличается от используемой при компоновке и в двумерной графике, где начало координат (, ) находится в левом верхнем углу, а положительное направление оси Y — вниз по экрану. Чтобы не запутаться при работе с этими координатными системами, следует соблюдать осторожность.
А что собой представляют значения, выдаваемые акселерометром? Ускорение измеряется в метрах за секунду в квадрате (м/с ). Ускорение свободного падения составляет примерно, м/с в направлении центра Земли. С точки зрения акселерометра значение ускорения свободного падения равно -,. Если устройство полностью неподвижно (не перемещается) и находится на идеально гладкой поверхности, показания по осям X и Y будут равны, а по оси Z — выглядеть как +,. На самом деле значения не будут в точности такими из-за чувствительности и точности акселерометра, но они будут близки к указанным. Когда устройство находится в состоянии покоя, на него воздействует только сила тяжести, а поскольку она направлена строго вниз, и поверхность, на которой лежит устройство, идеально плоская, показания по осям X и Y равны. По оси Z акселерометр измеряет силу, воздействующую на устройство, минус сила тяжести. Таким образом, минус -, в результате дает +. — это и будет значением по оси Z (values [] в объекте SensorEvent).
Значения, посылаемые приложению акселерометром, всегда представляют сумму всех сил, действующих на устройство, минус сила тяжести. Если начать поднимать устройство, первым делом будет изменяться значение Z, т.к. увеличивается сила в направлении вверх (Z). Как только подъем останавливается, общая сила возвращается к
одной лишь силе тяжести. Если уронить устройство (теоретически — в реальности не делайте это), оно летело бы к земле с ускорением свободного падения, так что акселерометр показал бы в итоге нулевую суммарную силу.
Давайте возьмем устройство, показанное., и повернем его так, чтобы оно находилось в книжном режиме вертикально. Ось X останется той же самой, указывая слева направо. Ось Y теперь направлена вверх и вниз, а ось Z указывает в направлении от экрана прямо на нас. В этом случае значением Y будет +,, а значениями X и Z — нули.
Что произойдет, когда мы повернем устройство в альбомный режим, продолжая удерживать его вертикально, т.е. экран будет находиться прямо перед глазами? Если вы предположите, что значениями Y и Z будут нули, а значение X станет равно +., то будете правы., что примерно можно увидеть.
Читайте http://jurnalrabot.ru/ru-zhurnal-avtorskogo-nadzora-za-stroitelstvom.html.
Когда устройство не перемещается или перемещается с постоянной скоростью, акселерометры измеряют только силу тяжести. При этом по каждой оси значение из акселерометра будет соответствовать компоненте силы тяжести в направлении этой оси. Следовательно, воспользовавшись знаниями тригонометрии, можно выяснить углы и определить, как устройство ориентировано относительно направления силы тяжести. Это значит, что вы можете сообщить, что устройство находится в книжном или журнальном режиме либо просто наклонено. В действительности именно это Android делает для определения используемого режима (книжный или журнальный). Однако обратите внимание, что акселерометры не сообщают, как устройство сориентировано относительно магнитных полюсов. Именно здесь в игру вступает датчик магнитного поля, который рассматривается в следующем разделе.
|