QRotationReading Class
The QRotationReading class represents one reading from the rotation sensor. More...
Header: | #include <QRotationReading> |
qmake: | QT += sensors |
Since: | Qt 5.1 |
Inherits: | QSensorReading |
Properties
- 1 property inherited from QSensorReading
- 1 property inherited from QObject
Public Functions
QRotationReading(QObject *parent = DECLARE_READING(QRotationReading)) | |
virtual | ~QRotationReading() |
void | setFromEuler(qreal x, qreal y, qreal z) |
qreal | x() const |
qreal | y() const |
qreal | z() const |
Reimplemented Public Functions
virtual void | copyValuesFrom(QSensorReading *other) override |
- 4 public functions inherited from QSensorReading
- 31 public functions inherited from QObject
Static Public Members
const QMetaObject | staticMetaObject |
- 9 static public members inherited from QObject
Additional Inherited Members
- 1 public slot inherited from QObject
- 2 signals inherited from QObject
- 9 protected functions inherited from QObject
Detailed Description
The QRotationReading class represents one reading from the rotation sensor.
QRotationReading Units
The rotation reading contains 3 angles, measured in degrees that define 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.
The three angles are applied to the device in the following order.
- Right-handed rotation z (-180, 180]. Starting from the y-axis and incrementing in the counter-clockwise direction.
- Right-handed rotation x [-90, 90]. Starting from the new (once-rotated) y-axis and incrementing towards the z-axis.
- Right-handed rotation y (-180, 180]. Starting from the new (twice-rotated) z-axis and incrementing towards the x-axis.
Here is a visualization showing the order in which angles are applied.
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. Here is an example of how the x value will change with device movement.
Here is an example of how the y value will change with device movement.
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 rotation will be 0.
Property Documentation
x : const qreal
This property holds the rotation around the x axis.
Measured as degrees.
Access functions:
qreal | x() const |
See also QRotationReading Units.
y : const qreal
This property holds the rotation around the y axis.
Measured as degrees.
Access functions:
qreal | y() const |
See also QRotationReading Units.
z : const qreal
This property holds the rotation around the z axis.
Measured as degrees.
Access functions:
qreal | z() const |
See also QRotationReading Units.
Member Function Documentation
QRotationReading::QRotationReading(QObject *parent = DECLARE_READING(QRotationReading))
Default constructs an instance of QRotationReading.
[virtual]
QRotationReading::~QRotationReading()
Destroys the instance of QRotationReading. The destructor is virtual.
[override virtual]
void QRotationReading::copyValuesFrom(QSensorReading *other)
void QRotationReading::setFromEuler(qreal x, qreal y, qreal z)
Sets the rotation from three euler angles.
This is to be called from the backend.
The angles are measured in degrees. The order of the rotations matters, as first the z rotation is applied, then the x rotation and finally the y rotation.
This function was introduced in Qt 5.0.
© 2019 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.