Класс QVector3D
Класс QVector3D представляет вектор или вершину в 3D пространстве. Подробнее...
| Заголовок: | #include <QVector3D> |
| qmake: | QT += gui |
| С тех пор: | Qt 4.6 |
Этот класс был представлен в Qt 4.6.
Публичные функции
| QVector3D(const QVector4D &vector) | |
| QVector3D(const QVector2D &vector, float zpos) | |
| QVector3D(const QVector2D &vector) | |
| QVector3D(const QPointF &point) | |
| QVector3D(const QPoint &point) | |
| QVector3D(float xpos, float ypos, float zpos) | |
| QVector3D() | |
| float | distanceToLine(const QVector3D &point, const QVector3D &direction) const |
| float | distanceToPlane(const QVector3D &plane, const QVector3D &normal) const |
| float | distanceToPlane(const QVector3D &plane1, const QVector3D &plane2, const QVector3D &plane3) const |
| float | distanceToPoint(const 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*=(const QVector3D &vector) |
| QVector3D & | operator+=(const QVector3D &vector) |
| QVector3D & | operator-=(const QVector3D &vector) |
| QVector3D & | operator/=(float divisor) |
| QVector3D & | operator/=(const QVector3D &vector) |
| float & | operator[](int i) |
| float | operator[](int i) const |
Статические публичные члены
| QVector3D | crossProduct(const QVector3D &v1, const QVector3D &v2) |
| float | dotProduct(const QVector3D &v1, const QVector3D &v2) |
| QVector3D | normal(const QVector3D &v1, const QVector3D &v2) |
| QVector3D | normal(const QVector3D &v1, const QVector3D &v2, const QVector3D &v3) |
Связанные нечлены
| bool | qFuzzyCompare(const QVector3D &v1, const QVector3D &v2) |
| bool | operator!=(const QVector3D &v1, const QVector3D &v2) |
| const QVector3D | operator*(float factor, const QVector3D &vector) |
| const QVector3D | operator*(const QVector3D &vector, float factor) |
| const QVector3D | operator*(const QVector3D &v1, const QVector3D &v2) |
| const QVector3D | operator+(const QVector3D &v1, const QVector3D &v2) |
| const QVector3D | operator-(const QVector3D &v1, const QVector3D &v2) |
| const QVector3D | operator-(const QVector3D &vector) |
| const QVector3D | operator/(const QVector3D &vector, float divisor) |
| const QVector3D | operator/(const QVector3D &vector, const QVector3D &divisor) |
| QDataStream & | operator<<(QDataStream &stream, const QVector3D &vector) |
| bool | operator==(const QVector3D &v1, const QVector3D &v2) |
| QDataStream & | operator>>(QDataStream &stream, QVector3D &vector) |
Подробное описание
Векторы являются одним из основных строительных блоков 3D представления и отрисовки. Они состоят из трёх координат, традиционно называемых x, y и z.
Класс QVector3D также может быть использован для представления вершин в 3D пространстве. Поэтому нам не нужно предоставлять отдельный класс вершин.
См. также QVector2D, QVector4D и QQuaternion.
Документация по функциям-членам
QVector3D::QVector3D(const QVector4D &vector)
Создаёт 3D вектор из заданного 4D вектора vector. Координата w отбрасывается.
См. также toVector4D().
QVector3D::QVector3D(const QVector2D &vector, float zpos)
Создаёт 3D вектор из заданного 2D вектора vector. Координата z устанавливается в zpos.
См. также toVector2D().
QVector3D::QVector3D(const QVector2D &vector)
Создаёт 3D вектор из заданного 2D вектора vector. Координата z устанавливается в ноль.
См. также toVector2D().
QVector3D::QVector3D(const QPointF &point)
Создаёт вектор с координатами x и y из 2D точки point, и координатой z равной 0.
QVector3D::QVector3D(const QPoint &point)
Создаёт вектор с координатами x и y из 2D точки point, и координатой z равной 0.
QVector3D::QVector3D(float xpos, float ypos, float zpos)
Создаёт вектор с координатами (xpos, ypos, zpos).
QVector3D::QVector3D()
Создаёт нулевой вектор, т.е. с координатами (0, 0, 0).
QVector3D QVector3D::crossProduct(const QVector3D &v1, const QVector3D &v2)
Возвращает векторное произведение векторов v1 и v2, соответствующий нормальному вектору плоскости, определённой векторами v1 и v2.
См. также normal().
float QVector3D::distanceToLine(const QVector3D &point, const QVector3D &direction) const
Возвращает расстояние, на котором эта вершина находится от прямой, определённой точкой point и единичным вектором direction.
Если direction является нулевым вектором, то он не определяет прямую. В этом случае возвращается расстояние от point до этой вершины.
См. также distanceToPlane().
float QVector3D::distanceToPlane(const QVector3D &plane, const QVector3D &normal) const
Возвращает расстояние от этой вершины до плоскости, определённой вершиной plane и единичным вектором normal. Параметр normal предполагается нормированным к единичному вектору.
Возвращаемое значение будет отрицательным, если вершина находится под плоскостью, или нулём, если она находится на плоскости.
См. также normal() и distanceToLine().
float QVector3D::distanceToPlane(const QVector3D &plane1, const QVector3D &plane2, const QVector3D &plane3) const
Это перегруженная функция.
Возвращает расстояние от этой вершины до плоскости, определённой вершинами plane1, plane2 и plane3.
Возвращаемое значение будет отрицательным, если вершина находится под плоскостью, или нулём, если она находится на плоскости.
Два вектора, определяющие плоскость, это plane2 - plane1 и plane3 - plane1.
См. также normal() и distanceToLine().
float QVector3D::distanceToPoint(const QVector3D &point) const
Возвращает расстояние от этой вершины до точки, определённой вершиной point.
Эта функция была введена в Qt 5.1.
См. также distanceToPlane() и distanceToLine().
float QVector3D::dotProduct(const QVector3D &v1, const 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().
QVector3D QVector3D::normal(const QVector3D &v1, const QVector3D &v2)
Возвращает нормальный вектор плоскости, определённой векторами v1 и v2, нормированный до единичного вектора.
Используйте crossProduct(), чтобы вычислить векторное произведение v1 и v2, если вам не нужно, чтобы результат был нормирован к единичному вектору.
См. также crossProduct() и distanceToPlane().
QVector3D QVector3D::normal(const QVector3D &v1, const QVector3D &v2, const 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().
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().
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*=(const QVector3D &vector)
Это перегруженная функция.
Умножает компоненты этого вектора на соответствующие компоненты в vector.
Примечание: это не то же самое, что crossProduct() этого вектора и vector.
См. также crossProduct().
QVector3D &QVector3D::operator+=(const QVector3D &vector)
Добавляет заданный vector к этому вектору и возвращает ссылку на этот вектор.
См. также operator-=().
QVector3D &QVector3D::operator-=(const QVector3D &vector)
Вычитает заданный vector из этого вектора и возвращает ссылку на этот вектор.
См. также operator+=().
QVector3D &QVector3D::operator/=(float divisor)
Делит координаты этого вектора на заданный divisor и возвращает ссылку на этот вектор.
См. также operator*=().
QVector3D &QVector3D::operator/=(const QVector3D &vector)
Делит компоненты этого вектора на соответствующие компоненты в vector.
Эта функция была добавлена в Qt 5.5.
См. также operator*=().
float &QVector3D::operator[](int i)
Возвращает компонент вектора в позиции индекса i как ссылку на изменяемый элемент.
i должен быть корректной позицией индекса в векторе (т. е., 0 <= i < 3).
Эта функция была добавлена в Qt 5.2.
float QVector3D::operator[](int i) const
Возвращает компонент вектора в позиции индекса i.
i должен быть корректной позицией индекса в векторе (т. е., 0 <= i < 3).
Эта функция была добавлена в Qt 5.2.
Связанные нечлены
bool qFuzzyCompare(const QVector3D &v1, const QVector3D &v2)
Возвращает true если v1 и v2 равны, учитывая небольшой фактор неточности для сравнения с плавающей запятой; в противном случае возвращает false.
bool operator!=(const QVector3D &v1, const QVector3D &v2)
Возвращает true если v1 не равно v2; в противном случае возвращает false. Этот оператор использует точное сравнение с плавающей запятой.
const QVector3D operator*(float factor, const QVector3D &vector)
Возвращает копию заданного vector, умноженную на заданный factor.
См. также QVector3D::operator*=().
const QVector3D operator*(const QVector3D &vector, float factor)
Возвращает копию заданного vector, умноженную на заданный factor.
См. также QVector3D::operator*=().
const QVector3D operator*(const QVector3D &v1, const QVector3D &v2)
Умножает компоненты v1 на соответствующие компоненты в v2.
Примечание: это не то же самое, что crossProduct() v1 и v2.
См. также QVector3D::crossProduct().
const QVector3D operator+(const QVector3D &v1, const QVector3D &v2)
Возвращает объект QVector3D, являющийся суммой заданных векторов v1 и v2; каждая компонента добавляется отдельно.
См. также QVector3D::operator+=().
const QVector3D operator-(const QVector3D &v1, const QVector3D &v2)
Возвращает объект QVector3D, полученный путем вычитания v2 из v1; каждая компонента вычитается отдельно.
См. также QVector3D::operator-=().
const QVector3D operator-(const QVector3D &vector)
Это перегруженная функция.
Возвращает объект QVector3D, образованный изменением знака всех трёх компонент заданного vector.
Эквивалентно QVector3D(0,0,0) - vector.
const QVector3D operator/(const QVector3D &vector, float divisor)
Возвращает объект QVector3D, образованный путём деления всех трёх компонент заданного vector на заданный divisor.
См. также QVector3D::operator/=().
const QVector3D operator/(const QVector3D &vector, const QVector3D &divisor)
Возвращает объект QVector3D, полученный путём деления компонент заданного vector на соответствующие компоненты заданного divisor.
Эта функция была добавлена в Qt 5.5.
См. также QVector3D::operator/=().
QDataStream &operator<<(QDataStream &stream, const QVector3D &vector)
Записывает заданный vector в заданный stream и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
bool operator==(const QVector3D &v1, const 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-5.15/qvector3d.html