Класс QQuaternion
Класс QQuaternion представляет кватернион, состоящий из вектора и скаляра. Подробнее...
| Заголовок: | #include <QQuaternion> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Открытые функции
| QQuaternion(const QVector4D &vector) | |
| QQuaternion(float scalar, const QVector3D &vector) | |
| QQuaternion(float scalar, float xpos, float ypos, float zpos) | |
| QQuaternion() | |
| QQuaternion | conjugated() const |
| void | getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const |
| void | getAxisAndAngle(float *x, float *y, float *z, float *angle) const |
| void | getAxisAndAngle(QVector3D *axis, float *angle) const |
| void | getEulerAngles(float *pitch, float *yaw, float *roll) const |
| QQuaternion | inverted() const |
| bool | isIdentity() const |
| bool | isNull() const |
| float | length() const |
| float | lengthSquared() const |
| void | normalize() |
| QQuaternion | normalized() const |
| QVector3D | rotatedVector(const QVector3D &vector) const |
| float | scalar() const |
| void | setScalar(float scalar) |
| void | setVector(const QVector3D &vector) |
| void | setVector(float x, float y, float z) |
| void | setX(float x) |
| void | setY(float y) |
| void | setZ(float z) |
| QVector3D | toEulerAngles() const |
| QMatrix3x3 | toRotationMatrix() const |
| QVector4D | toVector4D() const |
| QVector3D | vector() const |
| float | x() const |
| float | y() const |
| float | z() const |
| QVariant | operator QVariant() const |
| QQuaternion & | operator*=(float factor) |
| QQuaternion & | operator*=(const QQuaternion &quaternion) |
| QQuaternion & | operator+=(const QQuaternion &quaternion) |
| QQuaternion & | operator-=(const QQuaternion &quaternion) |
| QQuaternion & | operator/=(float divisor) |
Статические публичные члены
| float | dotProduct(const QQuaternion &q1, const QQuaternion &q2) |
| QQuaternion | fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis) |
| QQuaternion | fromAxisAndAngle(const QVector3D &axis, float angle) |
| QQuaternion | fromAxisAndAngle(float x, float y, float z, float angle) |
| QQuaternion | fromDirection(const QVector3D &direction, const QVector3D &up) |
| QQuaternion | fromEulerAngles(float pitch, float yaw, float roll) |
| QQuaternion | fromEulerAngles(const QVector3D &eulerAngles) |
| QQuaternion | fromRotationMatrix(const QMatrix3x3 &rot3x3) |
| QQuaternion | nlerp(const QQuaternion &q1, const QQuaternion &q2, float t) |
| QQuaternion | rotationTo(const QVector3D &from, const QVector3D &to) |
| QQuaternion | slerp(const QQuaternion &q1, const QQuaternion &q2, float t) |
Связанные нечлены
| bool | qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2) |
| bool | operator!=(const QQuaternion &q1, const QQuaternion &q2) |
| const QQuaternion | operator*(float factor, const QQuaternion &quaternion) |
| const QQuaternion | operator*(const QQuaternion &quaternion, float factor) |
| const QQuaternion | operator*(const QQuaternion &q1, const QQuaternion &q2) |
| QVector3D | operator*(const QQuaternion &quaternion, const QVector3D &vec) |
| const QQuaternion | operator+(const QQuaternion &q1, const QQuaternion &q2) |
| const QQuaternion | operator-(const QQuaternion &q1, const QQuaternion &q2) |
| const QQuaternion | operator-(const QQuaternion &quaternion) |
| const QQuaternion | operator/(const QQuaternion &quaternion, float divisor) |
| QDataStream & | operator<<(QDataStream &stream, const QQuaternion &quaternion) |
| bool | operator==(const QQuaternion &q1, const QQuaternion &q2) |
| QDataStream & | operator>>(QDataStream &stream, QQuaternion &quaternion) |
Подробное описание
Кватернионы используются для представления вращений в 3D пространстве и состоят из 3D оси вращения, заданной координатами x, y и z, и скаляра, представляющего угол вращения.
Документация по членам функции
QQuaternion::QQuaternion(const QVector4D &vector)
Создаёт кватернион из компонентов vector.
QQuaternion::QQuaternion(float scalar, const QVector3D &vector)
Создаёт кватернион из заданного вектора и скаляра.
См. также vector() и scalar().
QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)
Создаёт кватернион с вектором (xpos, ypos, zpos) и скаляром.
QQuaternion::QQuaternion()
Создаёт единичный кватернион (1, 0, 0, 0), т.е. с вектором (0, 0, 0) и скаляром 1.
[since 5.5] QQuaternion QQuaternion::conjugated() const
Возвращает сопряжённый кватернион, который равен (-x, -y, -z, scalar).
Эта функция была введена в Qt 5.5.
[static, since 5.5] float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2)
Возвращает скалярное произведение q1 и q2.
Эта функция была введена в Qt 5.5.
См. также length().
[static, since 5.5] QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
Создаёт кватернион, используя 3 оси (xAxis, yAxis, zAxis).
Примечание: Оси предполагаются ортонормированными.
Эта функция была введена в Qt 5.5.
См. также getAxes() и fromRotationMatrix().
[static] QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)
Создаёт нормированный кватернион, соответствующий вращению на angle градусов вокруг заданной 3D оси axis.
См. также getAxisAndAngle().
[static] QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle)
Создаёт нормированный кватернион, соответствующий вращению на angle градусов вокруг 3D оси (x, y, z).
См. также getAxisAndAngle().
[static, since 5.5] QQuaternion QQuaternion::fromDirection(const QVector3D &direction, const QVector3D &up)
Создаёт кватернион, используя указанное направление вперёд direction и направление вверх up. Если направление вверх не было указано или векторы вперёд и вверх коллинеарны, будет сгенерировано новое ортонормированное направление вверх.
Эта функция была введена в Qt 5.5.
См. также fromAxes() и rotationTo().
[static, since 5.5] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)
Создаёт кватернион, соответствующий вращению на roll градусов вокруг оси z, pitch градусов вокруг оси x и yaw градусов вокруг оси y (в указанном порядке).
Эта функция была введена в Qt 5.5.
См. также getEulerAngles().
[static, since 5.5] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &eulerAngles)
Это перегруженная функция.
Создаёт кватернион, соответствующий вращению на eulerAngles: eulerAngles.z() градусов вокруг оси z, eulerAngles.x() градусов вокруг оси x и eulerAngles.y() градусов вокруг оси y (в указанном порядке).
Эта функция была введена в Qt 5.5.
См. также toEulerAngles().
[static, since 5.5] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
Создаёт кватернион, соответствующий матрице вращения rot3x3.
Примечание: Если заданная матрица вращения не нормирована, полученный кватернион будет содержать информацию о масштабировании.
Эта функция была введена в Qt 5.5.
См. также toRotationMatrix() и fromAxes().
[since 5.5] void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const
Возвращает 3 ортонормированные оси (xAxis, yAxis, zAxis), определяющие кватернион.
Эта функция была введена в Qt 5.5.
См. также fromAxes() и toRotationMatrix().
[since 5.5] void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const
Извлекает 3D ось (x, y, z) и угол вращения angle (в градусах), соответствующие этому кватерниону.
Эта функция была введена в Qt 5.5.
См. также fromAxisAndAngle().
[since 5.5] void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const
Это перегруженная функция.
Извлекает 3D ось axis и угол поворота angle (в градусах), соответствующие этому кватерниону.
Эта функция была добавлена в Qt 5.5.
См. также fromAxisAndAngle().
[since 5.5] void QQuaternion::getEulerAngles(float *pitch, float *yaw, float *roll) const
Вычисляет углы Эйлера roll, pitch и yaw (в градусах), соответствующие этому кватерниону.
Эта функция была добавлена в Qt 5.5.
См. также fromEulerAngles().
[since 5.5] QQuaternion QQuaternion::inverted() const
Возвращает обратный кватернион. Если этот кватернион нулевой, возвращается нулевой кватернион.
Эта функция была добавлена в Qt 5.5.
См. также isNull() и length().
bool QQuaternion::isIdentity() const
Возвращает true, если компоненты x, y и z этого кватерниона равны 0.0, а скалярная компонента равна 1.0; в противном случае возвращает false.
bool QQuaternion::isNull() const
Возвращает true, если компоненты x, y, z и скалярная компонента этого кватерниона равны 0.0; в противном случае возвращает false.
float QQuaternion::length() const
Возвращает длину кватерниона. Также называется "норма".
См. также lengthSquared(), normalized() и dotProduct().
float QQuaternion::lengthSquared() const
Возвращает квадрат длины кватерниона.
См. также length() и dotProduct().
[static] QQuaternion QQuaternion::nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Интерполирует вдоль кратчайшего линейного пути между позициями вращения q1 и q2. Значение t должно быть между 0 и 1, указывая расстояние, которое необходимо пройти между q1 и q2. Результат будет нормализован().
Если t меньше или равно 0, то будет возвращено q1. Если t больше или равно 1, то будет возвращено q2.
Функция nlerp() обычно быстрее, чем slerp(), и даст приближенные результаты для сферической интерполяции, достаточные для некоторых применений.
См. также slerp().
void QQuaternion::normalize()
Нормализует текущий кватернион на месте. Ничего не происходит, если это нулевой кватернион или длина кватерниона очень близка к 1.
См. также length() и normalized().
QQuaternion QQuaternion::normalized() const
Возвращает нормализованную единичную форму этого кватерниона.
Если этот кватернион нулевой, возвращается нулевой кватернион. Если длина кватерниона очень близка к 1, кватернион возвращается как есть. В противном случае возвращается нормализованная форма кватерниона длиной 1.
См. также normalize(), length() и dotProduct().
QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const
Поворачивает vector с помощью этого кватерниона, чтобы получить новый вектор в 3D пространстве. Следующий код:
QVector3D result = q.rotatedVector(vector);
эквивалентен следующему:
QVector3D result = (q * QQuaternion(0, vector) * q.conjugated()).vector();
[static, since 5.5] QQuaternion QQuaternion::rotationTo(const QVector3D &from, const QVector3D &to)
Возвращает кратчайший кватернион дуги для поворота от направления, заданного вектором from, к направлению, заданному вектором to.
Эта функция была добавлена в Qt 5.5.
См. также fromDirection().
float QQuaternion::scalar() const
Возвращает скалярную компоненту этого кватерниона.
См. также setScalar(), x(), y() и z().
void QQuaternion::setScalar(float scalar)
Устанавливает скалярную компоненту этого кватерниона в scalar.
См. также scalar(), setX(), setY() и setZ().
void QQuaternion::setVector(const QVector3D &vector)
Устанавливает векторную компоненту этого кватерниона в vector.
См. также vector() и setScalar().
void QQuaternion::setVector(float x, float y, float z)
Устанавливает векторную компоненту этого кватерниона в (x, y, z).
См. также vector() и setScalar().
void QQuaternion::setX(float x)
Устанавливает координату x векторной части этого кватерниона на заданную координату x.
См. также x(), setY(), setZ() и setScalar().
void QQuaternion::setY(float y)
Устанавливает координату y векторной части этого кватерниона на заданную координату y.
См. также y(), setX(), setZ() и setScalar().
void QQuaternion::setZ(float z)
Устанавливает координату z векторной части этого кватерниона на заданную координату z.
См. также z(), setX(), setY() и setScalar().
[static] QQuaternion QQuaternion::slerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Интерполирует вдоль кратчайшего сферического пути между позициями вращения q1 и q2. Значение t должно быть между 0 и 1, указывая сферическое расстояние, которое необходимо пройти между q1 и q2.
Если t меньше или равно 0, то будет возвращено q1. Если t больше или равно 1, то будет возвращено q2.
См. также nlerp().
[since 5.5] QVector3D QQuaternion::toEulerAngles() const
Это перегруженная функция.
Вычисляет углы Эйлера roll, pitch и yaw (в градусах), соответствующие этому кватерниону.
Эта функция была добавлена в Qt 5.5.
См. также fromEulerAngles().
[since 5.5] QMatrix3x3 QQuaternion::toRotationMatrix() const
Создает матрицу поворота, соответствующую этому кватерниону.
Примечание: Если этот кватернион не нормализован, результирующая матрица поворота будет содержать информацию о масштабировании.
Эта функция была добавлена в Qt 5.5.
См. также fromRotationMatrix() и getAxes().
QVector4D QQuaternion::toVector4D() const
Возвращает этот кватернион как 4D вектор.
QVector3D QQuaternion::vector() const
Возвращает векторную компоненту этого кватерниона.
См. также setVector() и scalar().
float QQuaternion::x() const
Возвращает координату x векторной части этого кватерниона.
См. также setX(), y(), z() и scalar().
float QQuaternion::y() const
Возвращает координату y векторной части этого кватерниона.
См. также setY(), x(), z() и scalar().
float QQuaternion::z() const
Возвращает координату z векторной части этого кватерниона.
См. также setZ(), x(), y() и scalar().
QVariant QQuaternion::operator QVariant() const
Возвращает кватернион как QVariant.
QQuaternion &QQuaternion::operator*=(float factor)
Умножает компоненты этого кватерниона на заданный factor и возвращает ссылку на этот кватернион.
См. также operator/=().
QQuaternion &QQuaternion::operator*=(const QQuaternion &quaternion)
Умножает этот кватернион на quaternion и возвращает ссылку на этот кватернион.
QQuaternion &QQuaternion::operator+=(const QQuaternion &quaternion)
Добавляет заданный quaternion к этому кватерниону и возвращает ссылку на этот кватернион.
См. также operator-=().
QQuaternion &QQuaternion::operator-=(const QQuaternion &quaternion)
Вычитает заданный quaternion из этого кватерниона и возвращает ссылку на этот кватернион.
См. также operator+=().
QQuaternion &QQuaternion::operator/=(float divisor)
Делит компоненты этого кватерниона на заданный divisor и возвращает ссылку на этот кватернион.
См. также operator*=().
Связанные нечлены
bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2)
Возвращает true если q1 и q2 равны, учитывая небольшой фактор расплывчатости для сравнений с плавающей точкой; в противном случае — false.
bool operator!=(const QQuaternion &q1, const QQuaternion &q2)
Возвращает true если q1 не равно q2; в противном случае возвращает false. Этот оператор использует точное сравнение с плавающей точкой.
const QQuaternion operator*(float factor, const QQuaternion &quaternion)
Возвращает копию заданного quaternion, умноженного на заданный factor.
См. также QQuaternion::operator*=().
const QQuaternion operator*(const QQuaternion &quaternion, float factor)
Возвращает копию заданного quaternion, умноженного на заданный factor.
См. также QQuaternion::operator*=().
const QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2)
Умножает q1 и q2 с использованием умножения кватернионов. Результат соответствует применению обоих вращений, заданных q1 и q2.
См. также QQuaternion::operator*=().
[since 5.5] QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
Вращает вектор vec с кватернионом quaternion для создания нового вектора в 3D-пространстве.
Эта функция была добавлена в Qt 5.5.
const QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2)
Возвращает объект QQuaternion, являющийся суммой заданных кватернионов q1 и q2; каждый компонент складывается по отдельности.
См. также QQuaternion::operator+=().
const QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)
Возвращает объект QQuaternion, полученный вычитанием q2 из q1; каждый компонент вычитается по отдельности.
См. также QQuaternion::operator-=().
const QQuaternion operator-(const QQuaternion &quaternion)
Это перегруженная функция.
Возвращает объект QQuaternion, полученный изменением знака всех трёх компонентов заданного quaternion.
Эквивалентно QQuaternion(0,0,0,0) - quaternion.
const QQuaternion operator/(const QQuaternion &quaternion, float divisor)
Возвращает объект QQuaternion, полученный делением всех компонентов заданного quaternion на заданный divisor.
См. также QQuaternion::operator/=().
QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
Записывает заданный quaternion в заданный stream и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
bool operator==(const QQuaternion &q1, const QQuaternion &q2)
Возвращает true если q1 равно q2; в противном случае возвращает false. Этот оператор использует точное сравнение с плавающей точкой.
QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)
Считывает кватернион из заданного stream в заданный quaternion и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qquaternion.html