Spec-Zone.ru › Qt 6.1

Класс QMatrix4x4

Класс QMatrix4x4 представляет собой 4x4 матрицу преобразования в 3D пространстве. Подробнее...

Заголовок: #include <QMatrix4x4>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые типы

флаги Флаги

Открытые функции

QMatrix4x4(const QTransform &transform)
QMatrix4x4(const QGenericMatrix<N, M, float> &matrix = N)
QMatrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)
QMatrix4x4(const float *values)
QMatrix4x4()
QVector4D column(int index) const
const float * constData() const
void copyDataTo(float *values) const
float * data()
const float * data() const
double determinant() const
void fill(float value)
void frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane)
QMatrix4x4 inverted(bool *invertible = nullptr) const
bool isAffine() const
bool isIdentity() const
void lookAt(const QVector3D &eye, const QVector3D &center, const QVector3D &up)
QPoint map(const QPoint &point) const
QPointF map(const QPointF &point) const
QVector3D map(const QVector3D &point) const
QVector4D map(const QVector4D &point) const
QRect mapRect(const QRect &rect) const
QRectF mapRect(const QRectF &rect) const
QVector3D mapVector(const QVector3D &vector) const
QMatrix3x3 normalMatrix() const
void optimize()
void ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane)
void ortho(const QRect &rect)
void ortho(const QRectF &rect)
void perspective(float verticalAngle, float aspectRatio, float nearPlane, float farPlane)
void rotate(float angle, const QVector3D &vector)
void rotate(float angle, float x, float y, float z = 0.0f)
void rotate(const QQuaternion &quaternion)
QVector4D row(int index) const
void scale(const QVector3D &vector)
void scale(float x, float y)
void scale(float x, float y, float z)
void scale(float factor)
void setColumn(int index, const QVector4D &value)
void setRow(int index, const QVector4D &value)
void setToIdentity()
QGenericMatrix<N, M, float> toGenericMatrix() const
QTransform toTransform() const
QTransform toTransform(float distanceToPlane) const
void translate(const QVector3D &vector)
void translate(float x, float y)
void translate(float x, float y, float z)
QMatrix4x4 transposed() const
void viewport(float left, float bottom, float width, float height, float nearPlane = 0.0f, float farPlane = 1.0f)
void viewport(const QRectF &rect)
QVariant operator QVariant() const
bool operator!=(const QMatrix4x4 &other) const
const float & operator()(int row, int column) const
float & operator()(int row, int column)
QMatrix4x4 & operator*=(const QMatrix4x4 &other)
QMatrix4x4 & operator*=(float factor)
QMatrix4x4 & operator+=(const QMatrix4x4 &other)
QMatrix4x4 & operator-=(const QMatrix4x4 &other)
END_OF_DOCUMENT_MARKER
QMatrix4x4 & оператор/=(float divisor)
bool оператор==(const QMatrix4x4 &other) const

Связанные нечлены

QMatrix4x4 оператор*(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
QVector4D оператор*(const QVector4D &vector, const QMatrix4x4 &matrix)
QVector4D оператор*(const QMatrix4x4 &matrix, const QVector4D &vector)
QPoint оператор*(const QPoint &point, const QMatrix4x4 &matrix)
QPointF оператор*(const QPointF &point, const QMatrix4x4 &matrix)
QMatrix4x4 оператор*(float factor, const QMatrix4x4 &matrix)
QMatrix4x4 оператор*(const QMatrix4x4 &matrix, float factor)
QMatrix4x4 оператор+(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
QMatrix4x4 оператор-(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
QMatrix4x4 оператор-(const QMatrix4x4 &matrix)
QMatrix4x4 оператор/(const QMatrix4x4 &matrix, float divisor)
QDataStream & оператор<<(QDataStream &stream, const QMatrix4x4 &matrix)
QDataStream & оператор>>(QDataStream &stream, QMatrix4x4 &matrix)

Подробное описание

Класс QMatrix4x4 в целом обрабатывается как матрица с порядком строк, так как конструкторы и функции оператор() принимают данные в формате с порядком строк, как это обычно используется в стиле C.

Внутренне данные хранятся в формате с порядком столбцов, чтобы обеспечить оптимальную передачу функциям OpenGL, которые ожидают данные с порядком столбцов.

При использовании этих функций следует учитывать, что они возвращают данные в порядке столбцов:

  • data()
  • constData()

См. также QVector3D и QGenericMatrix.

Документация по функциям-членам

QMatrix4x4::QMatrix4x4(const QTransform &transform)

Конструирует 4x4 матрицу из обычной 2D-трансформационной матрицы Qt transform.

Если transform имеет специальный тип (единичная, сдвиг, масштабирование и т. д.), программист должен последовать этому конструктору, вызвав optimize(), если он хочет, чтобы QMatrix4x4 оптимизировал дальнейшие вызовы translate(), scale() и т. д.

См. также toTransform() и optimize().

template <int N, int M> QMatrix4x4::QMatrix4x4(const QGenericMatrix<N, M, float> &matrix = N)

Конструирует 4x4 матрицу из левых 4 столбцов и верхних 4 строк матрицы matrix. Если matrix содержит менее 4 столбцов или строк, оставшиеся элементы заполняются элементами единичной матрицы.

См. также toGenericMatrix().

QMatrix4x4::QMatrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)

Конструирует матрицу из 16 элементов m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43 и m44. Элементы указаны в порядке строк.

Если матрица имеет специальный тип (единичная, сдвиг, масштабирование и т. д.), программист должен последовать этому конструктору, вызвав optimize(), если он хочет, чтобы QMatrix4x4 оптимизировал дальнейшие вызовы translate(), scale() и т. д.

См. также optimize().

QMatrix4x4::QMatrix4x4(const float *values)

Конструирует матрицу из заданных 16 значений с плавающей запятой values. Содержимое массива values предполагается в порядке строк.

Если матрица имеет специальный тип (единичная, сдвиг, масштабирование и т. д.), программист должен последовать этому конструктору, вызвав optimize(), если он хочет, чтобы QMatrix4x4 оптимизировал дальнейшие вызовы translate(), scale() и т. д.

См. также copyDataTo() и optimize().

QMatrix4x4::QMatrix4x4()

Конструирует единичную матрицу.

QVector4D QMatrix4x4::column(int index) const

Возвращает элементы столбца index в виде 4D вектора.

См. также setColumn() и row().

const float *QMatrix4x4::constData() const

Возвращает постоянный указатель на исходные данные этой матрицы. Эти исходные данные хранятся в формате с порядком столбцов.

См. также data().

void QMatrix4x4::copyDataTo(float *values) const

Извлекает 16 элементов этой матрицы и копирует их в values в порядке строк.

float *QMatrix4x4::data()

Возвращает указатель на исходные данные этой матрицы.

См. также constData() и optimize().

const float *QMatrix4x4::data() const

Возвращает постоянный указатель на исходные данные этой матрицы. Эти исходные данные хранятся в формате с порядком столбцов.

См. также constData().

double QMatrix4x4::determinant() const

Возвращает определитель этой матрицы.

void QMatrix4x4::fill(float value)

Заполняет все элементы этой матрицы значением value.

void QMatrix4x4::frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane)

Умножает эту матрицу на другую, которая применяет проекцию перспективного усечённого конуса для окна с нижним левым углом (left, bottom), верхним правым углом (right, top) и указанными значениями nearPlane и farPlane для плоскостей обрезки.

См. также ortho() и perspective().

QMatrix4x4 QMatrix4x4::inverted(bool *invertible = nullptr) const

Возвращает обратную матрицу. Возвращает единичную матрицу, если эту матрицу нельзя обратить; т.е. determinant() равно нулю. Если invertible не равен null, то в это место будет записано значение true, если матрицу можно обратить; в противном случае — false.

Если матрица распознаётся как единичная или ортогональная матрица, эта функция быстро обратит матрицу, используя оптимизированные процедуры.

См. также determinant() и normalMatrix().

bool QMatrix4x4::isAffine() const

Возвращает true, если эта матрица является аффинной матрицей; в противном случае — false.

Аффинная матрица — это 4x4 матрица со строкой 3 равной (0, 0, 0, 1), например, без проекционных коэффициентов.

Эта функция была добавлена в Qt 5.5.

См. также isIdentity().

bool QMatrix4x4::isIdentity() const

Возвращает true если эта матрица является единичной; в противном случае — false.

См. также setToIdentity().

void QMatrix4x4::lookAt(const QVector3D &eye, const QVector3D &center, const QVector3D &up)

Умножает эту матрицу на матрицу вида, полученную из точки наблюдения eye. Значение center указывает центр вида, на который смотрит eye. Значение up указывает, какое направление следует считать направлением вверх относительно eye.

Примечание: Вектор up не должен быть параллелен линии взгляда от eye до center.

QPoint QMatrix4x4::map(const QPoint &point) const

Преобразует point путём умножения этой матрицы на point. Матрица применяется до точки.

См. также mapRect().

QPointF QMatrix4x4::map(const QPointF &point) const

Преобразует point путём пост-умножения этой матрицы на point. Матрица применяется до точки.

См. также mapRect().

QVector3D QMatrix4x4::map(const QVector3D &point) const

Преобразует point путём умножения этой матрицы на point. Матрица применяется до точки.

См. также mapRect() и mapVector().

QVector4D QMatrix4x4::map(const QVector4D &point) const

Преобразует point путём умножения этой матрицы на point. Матрица применяется до точки.

См. также mapRect().

QRect QMatrix4x4::mapRect(const QRect &rect) const

Преобразует rect путём умножения этой матрицы на углы rect, а затем формирует новый прямоугольник из результатов. Возвращаемый прямоугольник будет обычным 2D прямоугольником со сторонами, параллельными горизонтальной и вертикальной осям.

См. также map().

QRectF QMatrix4x4::mapRect(const QRectF &rect) const

Преобразует rect путём умножения этой матрицы на углы rect, а затем формирует новый прямоугольник из результатов. Возвращаемый прямоугольник будет обычным 2D прямоугольником со сторонами, параллельными горизонтальной и вертикальной осям.

См. также map().

QVector3D QMatrix4x4::mapVector(const QVector3D &vector) const

Преобразует vector путём умножения верхней 3x3 части этой матрицы на vector. Компоненты переноса и проекции этой матрицы игнорируются. Матрица применяется до вектора.

См. также map().

QMatrix3x3 QMatrix4x4::normalMatrix() const

Возвращает нормальную матрицу, соответствующую этому 4x4 преобразованию. Нормальная матрица является транспонированной обратной матрицы левой верхней 3x3 части этой 4x4 матрицы. Если 3x3 подматрица необратима, эта функция возвращает единичную матрицу.

См. также inverted().

void QMatrix4x4::optimize()

Оптимизирует использование этой матрицы по её текущим элементам.

Некоторые операции, такие как translate(), scale() и rotate(), могут выполняться более эффективно, если известно, что модифицируемая матрица уже является единичной, предыдущей translate(), предыдущей scale() и т. д.

Обычно класс QMatrix4x4 отслеживает этот специальный тип во время выполнения операций. Однако, если матрица модифицируется непосредственно с помощью operator()() или data(), QMatrix4x4 потеряет отслеживание специального типа и переключится на самые безопасные, но наименее эффективные операции.

Вызов optimize() после непосредственной модификации матрицы позволит QMatrix4x4 восстановить специальный тип, если элементы кажутся совместимыми с одним из известных оптимизированных типов.

См. также operator()(), data() и translate().

void QMatrix4x4::ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane)

Умножает эту матрицу на другую, которая применяет ортогональную проекцию для окна с левым нижним углом (left, bottom), правым верхним углом (right, top) и указанными отсекающими плоскостями nearPlane и farPlane.

См. также frustum() и perspective().

void QMatrix4x4::ortho(const QRect &rect)

Это перегруженная функция.

Умножает эту матрицу на другую, которая применяет ортогональную проекцию для окна с границами, заданными rect. Ближняя и дальняя отсекающие плоскости будут соответственно -1 и 1.

См. также frustum() и perspective().

void QMatrix4x4::ortho(const QRectF &rect)

Это перегруженная функция.

Умножает эту матрицу на другую, которая применяет ортогональную проекцию для окна с границами, заданными rect. Ближняя и дальняя отсекающие плоскости будут соответственно -1 и 1.

См. также frustum() и perspective().

void QMatrix4x4::perspective(float verticalAngle, float aspectRatio, float nearPlane, float farPlane)

Умножает эту матрицу на другую, которая применяет перспективную проекцию. Вертикальное поле обзора будет составлять verticalAngle градусов в окне с заданным aspectRatio, определяющим горизонтальное поле обзора. Проекция будет иметь указанные nearPlane и farPlane отсекающие плоскости, которые представляют собой расстояния от наблюдателя до соответствующих плоскостей.

См. также ortho() и frustum().

void QMatrix4x4::rotate(float angle, const QVector3D &vector)

Умножает эту матрицу на другую, которая вращает координаты на angle градусов вокруг vector.

См. также scale() и translate().

void QMatrix4x4::rotate(float angle, float x, float y, float z = 0.0f)

Это перегруженная функция.

Умножает эту матрицу на другую, которая вращает координаты на angle градусов вокруг вектора (x, y, z).

См. также scale() и translate().

void QMatrix4x4::rotate(const QQuaternion &quaternion)

Умножает эту матрицу на другую, которая вращает координаты в соответствии с заданным quaternion. Предполагается, что quaternion был нормализован.

См. также scale(), translate() и QQuaternion.

QVector4D QMatrix4x4::row(int index) const

Возвращает элементы строки index в виде 4D вектора.

См. также setRow() и column().

void QMatrix4x4::scale(const QVector3D &vector)

Умножает эту матрицу на другую, которая масштабирует координаты по компонентам vector.

См. также translate() и rotate().

void QMatrix4x4::scale(float x, float y)

Это перегруженная функция.

Умножает эту матрицу на другую, которая масштабирует координаты по компонентам x и y.

См. также translate() и rotate().

void QMatrix4x4::scale(float x, float y, float z)

Это перегруженная функция.

Умножает эту матрицу на другую, которая масштабирует координаты по компонентам x, y и z.

См. также translate() и rotate().

void QMatrix4x4::scale(float factor)

Это перегруженная функция.

Умножает эту матрицу на другую, которая масштабирует координаты на заданный factor.

См. также translate() и rotate().

void QMatrix4x4::setColumn(int index, const QVector4D &value)

Устанавливает элементы столбца index на компоненты value.

См. также column() и setRow().

void QMatrix4x4::setRow(int index, const QVector4D &value)

Устанавливает элементы строки index на компоненты value.

См. также row() и setColumn().

void QMatrix4x4::setToIdentity()

Устанавливает эту матрицу в единичную.

См. также isIdentity().

template <int N, int M> QGenericMatrix<N, M, float> QMatrix4x4::toGenericMatrix() const

Создает общую матрицу NxM из N левых столбцов и M верхних строк этой 4x4 матрицы. Если N или M больше 4, то оставшиеся элементы заполняются элементами единичной матрицы.

QTransform QMatrix4x4::toTransform() const

Возвращает стандартную 2D-матрицу преобразования Qt, соответствующую этой матрице.

Возвращаемая QTransform формируется простым удалением третьей строки и третьего столбца из QMatrix4x4. Это подходит для реализации ортогональных проекций, где координата z должна быть пропущена, а не спроецирована.

QTransform QMatrix4x4::toTransform(float distanceToPlane) const

Возвращает стандартную 2D-матрицу преобразования Qt, соответствующую этой матрице.

Если distanceToPlane отлична от нуля, это указывает на коэффициент проекции, используемый для корректировки координаты z. Значение 1024 соответствует коэффициенту проекции, используемому QTransform::rotate() для осей x и y.

Если distanceToPlane равна нулю, то возвращаемая QTransform формируется простым удалением третьей строки и третьего столбца из QMatrix4x4. Это подходит для реализации ортогональных проекций, где координата z должна быть пропущена, а не спроецирована.

void QMatrix4x4::translate(const QVector3D &vector)

Умножает эту матрицу на другую, которая переводит координаты на компоненты vector.

См. также scale() и rotate().

void QMatrix4x4::translate(float x, float y)

Это перегруженная функция.

Умножает эту матрицу на другую, которая переводит координаты на компоненты x и y.

См. также scale() и rotate().

void QMatrix4x4::translate(float x, float y, float z)

Это перегруженная функция.

Умножает эту матрицу на другую, которая переводит координаты на компоненты x, y и z.

См. также scale() и rotate().

QMatrix4x4 QMatrix4x4::transposed() const

Возвращает эту матрицу, транспонированную относительно главной диагонали.

void QMatrix4x4::viewport(float left, float bottom, float width, float height, float nearPlane = 0.0f, float farPlane = 1.0f)

Умножает эту матрицу на другую, которая выполняет преобразование масштабирования и смещения, используемое OpenGL для преобразования из нормированных координат устройства (NDC) в координаты области просмотра (окна). То есть она отображает точки из куба, охватывающего [-1, 1] по каждой размерности, в область просмотра с ее левым нижним углом в (left, bottom, nearPlane) и размером (width, height, farPlane - nearPlane).

Это соответствует преобразованию, используемому фиксированной функцией OpenGL, управляемой функциями glViewport() и glDepthRange().

void QMatrix4x4::viewport(const QRectF &rect)

Это перегруженная функция.

Устанавливает преобразование области просмотра для области просмотра, ограниченной rect, и с ближней и дальней плоскостями, установленными соответственно в 0 и 1.

QVariant QMatrix4x4::operator QVariant() const

Возвращает матрицу как QVariant.

bool QMatrix4x4::operator!=(const QMatrix4x4 &other) const

Возвращает true если эта матрица не идентична other; в противном случае - false. Этот оператор использует точное сравнение с плавающей точкой.

const float &QMatrix4x4::operator()(int row, int column) const

Возвращает постоянную ссылку на элемент в позиции (row, column) в этой матрице.

См. также column() и row().

float &QMatrix4x4::operator()(int row, int column)

Возвращает ссылку на элемент в позиции (row, column) в этой матрице, чтобы элемент можно было присвоить.

См. также optimize(), setColumn() и setRow().

QMatrix4x4 &QMatrix4x4::operator*=(const QMatrix4x4 &other)

Умножает содержимое other на эту матрицу.

QMatrix4x4 &QMatrix4x4::operator*=(float factor)

Это перегруженная функция.

Умножает все элементы этой матрицы на factor.

QMatrix4x4 &QMatrix4x4::operator+=(const QMatrix4x4 &other)

Добавляет содержимое other к этой матрице.

QMatrix4x4 &QMatrix4x4::operator-=(const QMatrix4x4 &other)

Вычитает содержимое other из этой матрицы.

QMatrix4x4 &QMatrix4x4::operator/=(float divisor)

Это перегруженная функция.

Делит все элементы этой матрицы на divisor.

bool QMatrix4x4::operator==(const QMatrix4x4 &other) const

Возвращает true если эта матрица идентична other; в противном случае - false. Этот оператор использует точное сравнение с плавающей точкой.

Связанные нечлены

QMatrix4x4 operator*(const QMatrix4x4 &m1, const QMatrix4x4 &m2)

Возвращает произведение m1 и m2.

QVector4D operator*(const QVector4D &vector, const QMatrix4x4 &matrix)

Возвращает результат преобразования vector в соответствии с matrix, применённой после вектора.

QVector4D operator*(const QMatrix4x4 &matrix, const QVector4D &vector)

Возвращает результат преобразования vector в соответствии с matrix, применённой перед вектором.

QPoint operator*(const QPoint &point, const QMatrix4x4 &matrix)

Возвращает результат преобразования point в соответствии с matrix, применённой после точки.

QPointF operator*(const QPointF &point, const QMatrix4x4 &matrix)

Возвращает результат преобразования point в соответствии с matrix, применённой после точки.

QMatrix4x4 operator*(float factor, const QMatrix4x4 &matrix)

Возвращает результат умножения всех элементов matrix на factor.

QMatrix4x4 operator*(const QMatrix4x4 &matrix, float factor)

Возвращает результат умножения всех элементов matrix на factor.

QMatrix4x4 operator+(const QMatrix4x4 &m1, const QMatrix4x4 &m2)

Возвращает сумму m1 и m2.

QMatrix4x4 operator-(const QMatrix4x4 &m1, const QMatrix4x4 &m2)

Возвращает разность m1 и m2.

QMatrix4x4 operator-(const QMatrix4x4 &matrix)

Это перегруженная функция.

Возвращает отрицание matrix.

QMatrix4x4 operator/(const QMatrix4x4 &matrix, float divisor)

Возвращает результат деления всех элементов matrix на divisor.

QDataStream &operator<<(QDataStream &stream, const QMatrix4x4 &matrix)

Записывает заданную matrix в заданный stream и возвращает ссылку на поток.

См. также Сериализация типов данных Qt.

QDataStream &operator>>(QDataStream &stream, QMatrix4x4 &matrix)

Считывает матрицу 4x4 из заданного stream в заданную matrix и возвращает ссылку на поток.

См. также Сериализация типов данных Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qmatrix4x4.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API