Класс 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 | является единичной() const |
| bool | равна нулю() 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 |
| QVariant | operator QVariant() const |
| QQuaternion & | умножить=(float factor) |
| QQuaternion & | умножить=(const QQuaternion &quaternion) |
| QQuaternion & | сложить=(const QQuaternion &quaternion) |
| QQuaternion & | вычесть=(const QQuaternion &quaternion) |
| QQuaternion & | разделить=(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-пространстве и состоят из 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. Результат будет нормализованным.
Если 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().
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*=().
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/archives/qt-5.11/qquaternion.html