--- a/qtmobility/src/sensors/qrotationsensor.cpp Fri May 14 16:41:33 2010 +0300
+++ b/qtmobility/src/sensors/qrotationsensor.cpp Thu May 27 13:42:11 2010 +0300
@@ -50,43 +50,51 @@
\class QRotationReading
\ingroup sensors_reading
- \preliminary
\brief The QRotationReading class represents one reading from the
rotation sensor.
\section2 QRotationReading Units
The rotation reading contains 3 angles, measured in degrees that define
- the orientation of the device in three-dimensional space. The rotations
- should not be confused with relative rotations such as yaw and pitch.
- These rotations are of the devices axes relative to the external
- reference points that define the reference co-ordinate axes: X, Y and Z
- in the diagram.
-
+ the orientation of the device in three-dimensional space. These angles
+ are similar to yaw, pitch and roll but are defined using only right hand
+ rotation with axes as defined by the right hand cartesian coordinate system.
+
+ \image sensors-rotation.jpg
+
The three angles are applied to the device in the following order.
\list
- \o Right-handed rotation z (-180, 180]. Starting from the x-axis and
- incrementing in the direction of the y-axis.
+ \o Right-handed rotation z (-180, 180]. Starting from the y-axis and
+ incrementing in the counter-clockwise direction.
\o Right-handed rotation x [-90, 90]. Starting from the new
(once-rotated) y-axis and incrementing towards the z-axis.
\o Right-handed rotation y (-180, 180]. Starting from the new
(twice-rotated) z-axis and incrementing towards the x-axis.
\endlist
- \image Rotation_angles.png Visual representation of the rotation angles.
+ Here is a visualisation showing the order in which angles are applied.
+
+ \image sensors-rotation-anim.gif
The 0 point for the z angle is defined as a fixed, external entity and
is device-specific. While magnetic North is typically used as this
reference point it may not be. Do not attempt to compare values
for the z angle between devices or even on the same device if it has
moved a significant distance.
-
+
If the device cannot detect a fixed, external entity the z angle will
always be 0 and the QRotationSensor::hasZ property will be set to false.
The 0 point for the x and y angles are defined as when the x and y axes
- of the device are oriented towards the horizon.
+ of the device are oriented towards the horizon. Here is an example of
+ how the x value will change with device movement.
+
+ \image sensors-rotation2.jpg
+
+ Here is an example of how the y value will change with device movement.
+
+ \image sensors-rotation3.jpg
Note that when x is 90 or -90, values for z and y achieve rotation around
the same axis (due to the order of operations). In this case the y
@@ -162,7 +170,6 @@
\class QRotationFilter
\ingroup sensors_filter
- \preliminary
\brief The QRotationFilter class is a convenience wrapper around QSensorFilter.
The only difference is that the filter() method features a pointer to QRotationReading
@@ -183,7 +190,6 @@
\class QRotationSensor
\ingroup sensors_type
- \preliminary
\brief The QRotationSensor class is a convenience wrapper around QSensor.
The only behavioural difference is that this class sets the type properly.