Класс QQuaternion
Класс QQuaternion представляет кватернион, состоящий из вектора и скаляра. Подробнее...
| Заголовок: | #include <QQuaternion> |
| qmake: | QT += gui |
| С момента: | Qt 4.6 |
Открытые функции
| QQuaternion() | |
| QQuaternion(float scalar, float xpos, float ypos, float zpos) | |
| QQuaternion(float scalar, const QVector3D &vector) | |
| QQuaternion(const QVector4D &vector) | |
| QQuaternion | сопряжённая() 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 | обратная() const |
| bool | isIdentity() const |
| bool | isNull() const |
| float | длина() const |
| float | квадрат длины() const |
| void | нормализовать() |
| QQuaternion | нормализованная() const |
| QVector3D | повернутый вектор(const QVector3D &vector) const |
| float | скалярная часть() const |
| void | установить скалярную часть(float scalar) |
| void | установить векторную часть(const QVector3D &vector) |
| void | установить векторную часть(float x, float y, float z) |
| void | установить x(float x) |
| void | установить y(float y) |
| void | установить z(float z) |
| QVector3D | в евклидовы углы() const |
| QMatrix3x3 | в матрицу поворота() const |
| QVector4D | в вектор 4D() const |
| QVector3D | векторная часть() const |
| float | x() const |
| float | y() const |
| float | z() const |
| 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 | скалярное произведение(const QQuaternion &q1, const QQuaternion &q2) |
| QQuaternion | из осей(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis) |
| QQuaternion | из оси и угла(const QVector3D &axis, float angle) |
| QQuaternion | из оси и угла(float x, float y, float z, float angle) |
| QQuaternion | из направления(const QVector3D &direction, const QVector3D &up) |
| QQuaternion | из евклидовых углов(float pitch, float yaw, float roll) |
| QQuaternion | из евклидовых углов(const QVector3D &eulerAngles) |
| QQuaternion | из матрицы поворота(const QMatrix3x3 &rot3x3) |
| QQuaternion | nlerp(const QQuaternion &q1, const QQuaternion &q2, float t) |
| QQuaternion | поворот к вектору(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) |
Подробное описание
Класс QQuaternion представляет кватернион, состоящий из вектора и скаляра.
Кватернионы используются для представления вращений в трехмерном пространстве и состоят из 3D оси вращения, заданной координатами x, y и z, и скаляра, представляющего угол поворота.
Документация по функциям-членам
QQuaternion::QQuaternion()
Конструирует единичный кватернион (1, 0, 0, 0), т. е. с вектором (0, 0, 0) и скаляром 1.
QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)
Конструирует кватернион с вектором (xpos, ypos, zpos) и scalar.
QQuaternion::QQuaternion(float scalar, const QVector3D &vector)
Конструирует кватернион-вектор из заданного vector и scalar.
См. также vector() и scalar().
QQuaternion::QQuaternion(const QVector4D &vector)
Конструирует кватернион из компонентов vector.
QQuaternion QQuaternion::conjugated() const
Возвращает сопряженный кватернион, который равен (-x, -y, -z, скаляр).
Эта функция была добавлена в Qt 5.5.
float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2)
Возвращает скалярное произведение q1 и q2.
Эта функция была добавлена в Qt 5.5.
См. также length().
QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
Конструирует кватернион, используя 3 оси (xAxis, yAxis, zAxis).
Примечание: Оси предполагаются ортонормированными.
Эта функция была добавлена в Qt 5.5.
См. также getAxes() и fromRotationMatrix().
QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)
Создает нормированный кватернион, соответствующий повороту на angle градусов вокруг заданной 3D оси axis.
См. также getAxisAndAngle().
QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle)
Создает нормированный кватернион, соответствующий повороту на angle градусов вокруг 3D оси (x, y, z).
См. также getAxisAndAngle().
QQuaternion QQuaternion::fromDirection(const QVector3D &direction, const QVector3D &up)
Конструирует кватернион, используя заданное направление вперед direction и направление вверх up. Если направление вверх не задано или векторы вперед и вверх коллинеарны, будет сгенерировано новое ортогональное направление вверх.
Эта функция была добавлена в Qt 5.5.
См. также fromAxes() и rotationTo().
QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)
Создает кватернион, соответствующий повороту на roll градусов вокруг оси z, pitch градусов вокруг оси x и yaw градусов вокруг оси y (в указанном порядке).
Эта функция была добавлена в Qt 5.5.
См. также getEulerAngles().
QQuaternion QQuaternion::fromEulerAngles(const QVector3D &eulerAngles)
Это перегруженная функция.
Создает кватернион, соответствующий повороту на eulerAngles: eulerAngles.z() градусов вокруг оси z, eulerAngles.x() градусов вокруг оси x и eulerAngles.y() градусов вокруг оси y (в указанном порядке).
Эта функция была добавлена в Qt 5.5.
См. также toEulerAngles().
QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
Создает кватернион, соответствующий матрице вращения rot3x3.
Примечание: Если заданная матрица вращения не нормирована, полученный кватернион будет содержать информацию о масштабировании.
Эта функция была добавлена в Qt 5.5.
См. также toRotationMatrix() и fromAxes().
void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const
Возвращает 3 ортонормированные оси (xAxis, yAxis, zAxis), определяющие кватернион.
Эта функция была добавлена в Qt 5.5.
См. также fromAxes() и toRotationMatrix().
void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const
Извлекает 3D ось (x, y, z) и угол поворота angle (в градусах), соответствующий этому кватерниону.
Эта функция была добавлена в Qt 5.5.
См. также fromAxisAndAngle().
void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const
Это перегруженная функция.
Извлекает 3D ось axis и угол поворота angle (в градусах), соответствующие этому кватерниону.
Эта функция была добавлена в Qt 5.5.
См. также fromAxisAndAngle().
void QQuaternion::getEulerAngles(float *pitch, float *yaw, float *roll) const
Вычисляет углы Эйлера roll, pitch и yaw (в градусах), соответствующие этому кватерниону.
Эта функция была добавлена в Qt 5.5.
См. также fromEulerAngles().
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. Результат будет normalized().
Если 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] 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().
QVector3D QQuaternion::toEulerAngles() const
Это перегруженная функция.
Вычисляет углы Эйлера roll, pitch и yaw (в градусах), соответствующие этому кватерниону.
Эта функция была добавлена в Qt 5.5.
См. также fromEulerAngles().
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().
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*=().
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-5.9/qquaternion.html