Класс QVector3D
Класс QVector3D представляет вектор или вершину в трёхмерном пространстве. Подробнее...
| Заголовок: | #include <QVector3D> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Открытые функции
| QVector3D(QVector4D vector) | |
| QVector3D(QVector2D vector, float zpos) | |
| QVector3D(QVector2D vector) | |
| QVector3D(QPointF point) | |
| QVector3D(QPoint point) | |
| QVector3D(float xpos, float ypos, float zpos) | |
| QVector3D() | |
| float | distanceToLine(QVector3D point, QVector3D direction) const |
| float | distanceToPlane(QVector3D plane, QVector3D normal) const |
| float | distanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const |
| float | distanceToPoint(QVector3D point) const |
| bool | isNull() const |
| float | length() const |
| float | lengthSquared() const |
| void | normalize() |
| QVector3D | normalized() const |
| QVector3D | project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const |
| void | setX(float x) |
| void | setY(float y) |
| void | setZ(float z) |
| QPoint | toPoint() const |
| QPointF | toPointF() const |
| QVector2D | toVector2D() const |
| QVector4D | toVector4D() const |
| QVector3D | unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const |
| float | x() const |
| float | y() const |
| float | z() const |
| QVariant | operator QVariant() const |
| QVector3D & | operator*=(float factor) |
| QVector3D & | operator*=(QVector3D vector) |
| QVector3D & | operator+=(QVector3D vector) |
| QVector3D & | operator-=(QVector3D vector) |
| QVector3D & | operator/=(float divisor) |
| QVector3D & | operator/=(QVector3D vector) |
| float & | operator[](int i) |
| float | operator[](int i) const |
Статические открытые члены
| QVector3D | crossProduct(QVector3D v1, QVector3D v2) |
| float | dotProduct(QVector3D v1, QVector3D v2) |
| QVector3D | normal(QVector3D v1, QVector3D v2) |
| QVector3D | normal(QVector3D v1, QVector3D v2, QVector3D v3) |
Связанные внешние члены
| bool | qFuzzyCompare(QVector3D v1, QVector3D v2) |
| bool | operator!=(QVector3D v1, QVector3D v2) |
| QVector3D | operator*(float factor, QVector3D vector) |
| QVector3D | operator*(QVector3D vector, float factor) |
| QVector3D | operator*(QVector3D v1, QVector3D v2) |
| QVector3D | operator+(QVector3D v1, QVector3D v2) |
| QVector3D | operator-(QVector3D v1, QVector3D v2) |
| QVector3D | operator-(QVector3D vector) |
| QVector3D | operator/(QVector3D vector, float divisor) |
| QVector3D | operator/(QVector3D vector, QVector3D divisor) |
| QDataStream & | operator<<(QDataStream &stream, QVector3D vector) |
| bool | operator==(QVector3D v1, QVector3D v2) |
| QDataStream & | operator>>(QDataStream &stream, QVector3D &vector) |
Подробное описание
Векторы являются одними из основных строительных блоков трёхмерного представления и отрисовки. Они состоят из трёх координат, традиционно называемых x, y и z.
Класс QVector3D также может использоваться для представления вершин в 3D пространстве. Поэтому нам не нужно предоставлять отдельный класс для вершин.
См. также QVector2D, QVector4D и QQuaternion.
Документация по членам-функциям
QVector3D::QVector3D(QVector4D vector)
Создаёт 3D вектор из заданного 4D вектора vector. Координата w отбрасывается.
См. также toVector4D().
QVector3D::QVector3D(QVector2D vector, float zpos)
Создаёт 3D вектор из заданного 2D вектора vector. Координата z устанавливается в zpos.
См. также toVector2D().
QVector3D::QVector3D(QVector2D vector)
Создаёт 3D вектор из заданного 2D вектора vector. Координата z устанавливается в ноль.
См. также toVector2D().
QVector3D::QVector3D(QPointF point)
Создаёт вектор с координатами x и y из 2D точки point, а координата z устанавливается в 0.
QVector3D::QVector3D(QPoint point)
Создаёт вектор с координатами x и y из 2D точки point, а координата z устанавливается в 0.
QVector3D::QVector3D(float xpos, float ypos, float zpos)
Создаёт вектор с координатами (xpos, ypos, zpos).
QVector3D::QVector3D()
Создаёт нулевой вектор, т.е. с координатами (0, 0, 0).
[static] QVector3D QVector3D::crossProduct(QVector3D v1, QVector3D v2)
Возвращает векторное произведение векторов v1 и v2, которое соответствует нормали к плоскости, определённой векторами v1 и v2.
См. также normal().
float QVector3D::distanceToLine(QVector3D point, QVector3D direction) const
Возвращает расстояние от данной вершины до прямой, определённой точкой point и единичным вектором direction.
Если direction — нулевой вектор, то он не определяет прямую. В этом случае возвращается расстояние от точки point до этой вершины.
См. также distanceToPlane().
float QVector3D::distanceToPlane(QVector3D plane, QVector3D normal) const
Возвращает расстояние от этой вершины до плоскости, заданной вершиной plane и единичным вектором normal. Параметр normal предполагается нормированным до единичного вектора.
Значение результата будет отрицательным, если вершина находится ниже плоскости, или нулевым, если она находится на плоскости.
См. также normal() и distanceToLine().
float QVector3D::distanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const
Возвращает расстояние от этой вершины до плоскости, заданной вершинами plane1, plane2 и plane3.
Значение результата будет отрицательным, если вершина находится ниже плоскости, или нулевым, если она находится на плоскости.
Два вектора, определяющие плоскость, — это plane2 - plane1 и plane3 - plane1.
См. также normal() и distanceToLine().
[since 5.1] float QVector3D::distanceToPoint(QVector3D point) const
Возвращает расстояние от этой вершины до точки, определённой вершиной point.
Эта функция была добавлена в Qt 5.1.
См. также distanceToPlane() и distanceToLine().
[static] float QVector3D::dotProduct(QVector3D v1, QVector3D v2)
Возвращает скалярное произведение v1 и v2.
bool QVector3D::isNull() const
Возвращает true если координаты x, y и z установлены в 0.0, в противном случае возвращает false.
float QVector3D::length() const
Возвращает длину вектора от начала координат.
См. также lengthSquared() и normalized().
float QVector3D::lengthSquared() const
Возвращает квадрат длины вектора от начала координат. Это эквивалентно скалярному произведению вектора на себя.
См. также length() и dotProduct().
[static] QVector3D QVector3D::normal(QVector3D v1, QVector3D v2)
Возвращает нормаль к плоскости, заданной векторами v1 и v2, нормированную до единичного вектора.
Используйте crossProduct(), чтобы вычислить векторное произведение v1 и v2, если вам не нужно, чтобы результат был нормирован до единичного вектора.
См. также crossProduct() и distanceToPlane().
[static] QVector3D QVector3D::normal(QVector3D v1, QVector3D v2, QVector3D v3)
Возвращает нормаль к плоскости, заданной векторами v2 - v1 и v3 - v1, нормированную до единичного вектора.
Используйте crossProduct(), чтобы вычислить векторное произведение v2 - v1 и v3 - v1, если вам не нужно, чтобы результат был нормирован до единичного вектора.
См. также crossProduct() и distanceToPlane().
void QVector3D::normalize()
Нормализует текущий вектор на месте. Ничего не происходит, если этот вектор нулевой или длина вектора очень близка к 1.
См. также length() и normalized().
QVector3D QVector3D::normalized() const
Возвращает нормированный единичный вектор этого вектора.
Если этот вектор нулевой, возвращается нулевой вектор. Если длина вектора очень близка к 1, то вектор возвращается как есть. В противном случае возвращается нормированная форма вектора длиной 1.
См. также length() и normalize().
[since 5.5] QVector3D QVector3D::project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
Возвращает координаты окна этого вектора, изначально в координатах объекта/модели, используя матрицу вида модели modelView, матрицу проекции projection и размеры области просмотра viewport.
При преобразовании из клипа в нормализованное пространство происходит деление компонент вектора на компоненту w. Для предотвращения деления на 0, если w равно 0, оно устанавливается в 1.
Примечание: возвращаемые координаты y находятся в ориентации OpenGL. OpenGL ожидает, что нижняя граница будет 0, в то время как для Qt верхняя граница равна 0.
Эта функция была добавлена в Qt 5.5.
См. также unproject().
void QVector3D::setX(float x)
Устанавливает координату x этой точки на заданную координату x.
См. также x(), setY() и setZ().
void QVector3D::setY(float y)
Устанавливает координату y этой точки на заданную координату y.
См. также y(), setX() и setZ().
void QVector3D::setZ(float z)
Устанавливает координату z этой точки на заданную координату z.
См. также z(), setX() и setY().
QPoint QVector3D::toPoint() const
Возвращает форму QPoint этого 3D вектора. Координата z отбрасывается.
См. также toPointF() и toVector2D().
QPointF QVector3D::toPointF() const
Возвращает форму QPointF этого 3D вектора. Координата z отбрасывается.
См. также toPoint() и toVector2D().
QVector2D QVector3D::toVector2D() const
Возвращает форму 2D вектора этого 3D вектора, отбрасывая координату z.
См. также toVector4D() и toPoint().
QVector4D QVector3D::toVector4D() const
Возвращает 4D форму этого 3D вектора, с координатой w, установленной в ноль.
См. также toVector2D() и toPoint().
[since 5.5] QVector3D QVector3D::unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
Возвращает координаты объекта/модели этого вектора, изначально заданного в координатах окна, используя матрицу вида модели modelView, матрицу проекции projection и размеры области просмотра viewport.
При преобразовании из пространства клипа в нормализованное пространство происходит деление на компоненту w вектора. Чтобы избежать деления на 0, если w равно 0, оно устанавливается в 1.
Примечание: координаты y в viewport должны использовать ориентацию OpenGL. OpenGL ожидает, что нижняя часть будет 0, в то время как для Qt верхняя часть равна 0.
Эта функция была добавлена в Qt 5.5.
См. также project().
float QVector3D::x() const
Возвращает координату x этой точки.
float QVector3D::y() const
Возвращает координату y этой точки.
float QVector3D::z() const
Возвращает координату z этой точки.
QVariant QVector3D::operator QVariant() const
Возвращает 3D вектор как QVariant.
QVector3D &QVector3D::operator*=(float factor)
Умножает координаты этого вектора на заданный factor и возвращает ссылку на этот вектор.
См. также operator/=().
QVector3D &QVector3D::operator*=(QVector3D vector)
Это перегруженная функция.
Умножает компоненты этого вектора на соответствующие компоненты в vector.
Примечание: это не то же самое, что crossProduct() этого вектора и vector.
См. также crossProduct().
QVector3D &QVector3D::operator+=(QVector3D vector)
Добавляет заданный vector к этому вектору и возвращает ссылку на этот вектор.
См. также operator-=().
QVector3D &QVector3D::operator-=(QVector3D vector)
Вычитает заданный vector из этого вектора и возвращает ссылку на этот вектор.
См. также operator+=().
QVector3D &QVector3D::operator/=(float divisor)
Делит координаты этого вектора на заданный divisor и возвращает ссылку на этот вектор.
См. также operator*=().
[since 5.5] QVector3D &QVector3D::operator/=(QVector3D vector)
Делит компоненты этого вектора на соответствующие компоненты в vector.
Эта функция была добавлена в Qt 5.5.
См. также operator*=().
[since 5.2] float &QVector3D::operator[](int i)
Возвращает компонент вектора в позиции индекса i как ссылку на изменяемое значение.
i должен быть допустимой позицией индекса в векторе (т.е., 0 <= i < 3).
Эта функция была добавлена в Qt 5.2.
[since 5.2] float QVector3D::operator[](int i) const
Возвращает компонент вектора в позиции индекса i.
i должен быть допустимой позицией индекса в векторе (т.е., 0 <= i < 3).
Эта функция была добавлена в Qt 5.2.
Связанные не члены
bool qFuzzyCompare(QVector3D v1, QVector3D v2)
Возвращает true, если v1 и v2 равны, с учетом малого коэффициента неточности для сравнения с плавающей точкой; в противном случае — false.
bool operator!=(QVector3D v1, QVector3D v2)
Возвращает true, если v1 не равно v2; в противном случае возвращает false. Этот оператор использует точное сравнение с плавающей точкой.
QVector3D operator*(float factor, QVector3D vector)
Возвращает копию заданного vector, умноженного на заданный factor.
См. также QVector3D::operator*=().
QVector3D operator*(QVector3D vector, float factor)
Возвращает копию заданного vector, умноженного на заданный factor.
См. также QVector3D::operator*=().
QVector3D operator*(QVector3D v1, QVector3D v2)
Умножает компоненты v1 на соответствующие компоненты в v2.
Примечание: Это не то же самое, что crossProduct() для v1 и v2.
См. также QVector3D::crossProduct().
QVector3D operator+(QVector3D v1, QVector3D v2)
Возвращает объект QVector3D, являющийся суммой заданных векторов v1 и v2; каждый компонент добавляется отдельно.
См. также QVector3D::operator+=().
QVector3D operator-(QVector3D v1, QVector3D v2)
Возвращает объект QVector3D, полученный путем вычитания v2 из v1; каждый компонент вычитается отдельно.
См. также QVector3D::operator-=().
QVector3D operator-(QVector3D vector)
Это перегруженная функция.
Возвращает объект QVector3D, полученный путем изменения знака всех трех компонент заданного vector.
Эквивалентно QVector3D(0,0,0) - vector.
QVector3D operator/(QVector3D vector, float divisor)
Возвращает объект QVector3D, образованный путем деления всех трех компонент заданного vector на заданный divisor.
См. также QVector3D::operator/=().
[since 5.5] QVector3D operator/(QVector3D vector, QVector3D divisor)
Возвращает объект QVector3D, образованный путем деления компонент заданного vector на соответствующие компоненты заданного divisor.
Эта функция была добавлена в Qt 5.5.
См. также QVector3D::operator/=().
QDataStream &operator<<(QDataStream &stream, QVector3D vector)
Записывает заданный vector в заданный stream и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
bool operator==(QVector3D v1, QVector3D v2)
Возвращает true, если v1 равно v2; в противном случае возвращает false. Этот оператор использует точное сравнение с плавающей точкой.
QDataStream &operator>>(QDataStream &stream, QVector3D &vector)
Считывает вектор 3D из заданного stream в заданный vector и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qvector3d.html