Класс QRay3D
(Qt3DCore::QRay3D)Класс QRay3D определяет направленную линию в 3D пространстве, проходящую через точку начала.
| Заголовок: | #include <QRay3D> |
| qmake: | QT += 3dcore |
| С тех пор: | Qt 5.5 |
Открытые функции
| QRay3D() | |
| QRay3D(const QVector3D &origin, const QVector3D &direction = QVector3D( 0.0f, 0.0f, 1.0f ), float distance = 1.0f) | |
| ~QRay3D() | |
| bool | contains(const QVector3D &point) const |
| bool | contains(const QRay3D &ray) const |
| QVector3D | direction() const |
| float | distance() const |
| float | distance(const QVector3D &point) const |
| QVector3D | origin() const |
| QVector3D | point(float t) const |
| QVector3D | project(const QVector3D &vector) const |
| float | projectedDistance(const QVector3D &point) const |
| void | setDirection(const QVector3D &direction) |
| void | setDistance(float distance) |
| void | setOrigin(const QVector3D &value) |
| QRay3D & | transform(const QMatrix4x4 &matrix) |
| QRay3D | transformed(const QMatrix4x4 &matrix) const |
| bool | operator!=(const QRay3D &other) const |
| bool | operator==(const QRay3D &other) const |
Связанные нечлены
| bool | qFuzzyCompare(const Qt3DCore::QRay3D &ray1, const Qt3DCore::QRay3D &ray2) |
| QDataStream & | operator>>(QDataStream &stream, Qt3DCore::QRay3D &ray) |
Подробное описание
Класс QRay3D определяет направленную линию в 3D пространстве, проходящую через точку начала.
Луч определяется точкой начала (origin()) и вектором направления (direction()). Лучи бесконечны по длине, распространяются от точки начала (origin()) в обоих направлениях. Если вектор направления (direction()) имеет нулевую длину, то поведение класса не определено.
Луч можно рассматривать как одномерную систему координат. Если координата равна t, то точка начала (origin()) находится при t = 0, точка origin() + direction() находится при t = 1, а точка origin() - direction() находится при t = -1. Метод point() можно использовать для получения положения точки в этой одномерной системе координат. Метод projectedDistance() можно использовать для преобразования точки в значение в этой одномерной системе координат.
Документация по функциям-членам
QRay3D::QRay3D()
Создаёт луч по умолчанию с началом (origin()) (0, 0, 0), направлением (direction()) (0, 0, 1) и длиной 1.
QRay3D::QRay3D(const QVector3D &origin, const QVector3D &direction = QVector3D( 0.0f, 0.0f, 1.0f ), float distance = 1.0f)
Создаёт луч, заданный началом origin, направлением direction и длиной distance. Направление direction не обязательно нормировать.
Для создания луча, проходящего через две точки, используйте следующее:
QRay3D thruAB(pointA, pointB - pointA);
QRay3D::~QRay3D()
Удаляет экземпляр QRay3D.
bool QRay3D::contains(const QVector3D &point) const
Возвращает true, если point лежит на луче; иначе — false.
bool QRay3D::contains(const QRay3D &ray) const
Возвращает true, если ray лежит на этом луче; иначе — false. Если true, это означает, что два луча на самом деле совпадают, но с разными точками начала (origin()) или инвертированным направлением (direction()).
QVector3D QRay3D::direction() const
Возвращает вектор направления этого луча. Значение по умолчанию (0, 0, 1).
См. также setDirection() и origin().
float QRay3D::distance() const
См. также setDistance().
float QRay3D::distance(const QVector3D &point) const
Возвращает минимальное расстояние от этого луча до point, или, что эквивалентно, длину линии, перпендикулярной этому лучу, проходящей через point. Если point находится на луче, то эта функция вернёт ноль.
См. также point().
QVector3D QRay3D::origin() const
Возвращает начало этого луча. Значение по умолчанию (0, 0, 0).
См. также setOrigin() и direction().
QVector3D QRay3D::point(float t) const
Возвращает точку на луче, определённую перемещением на t единиц вдоль луча в направлении вектора направления (direction()). Обратите внимание, что t может быть отрицательным, в этом случае возвращаемая точка будет лежать позади точки начала (origin()) относительно вектора направления (direction()).
Единицы для t определяются вектором направления (direction()). Возвращаемое значение точно равно origin() + t * direction().
См. также projectedDistance() и distance().
QVector3D QRay3D::project(const QVector3D &vector) const
Возвращает проекцию vector на этот луч. На следующей диаграмме пунктирная линия — луч, а V — vector. Возвращаемое значение будет вектором V':
[Отсутствует изображение qray3d-project.png]
См. также projectedDistance().
float QRay3D::projectedDistance(const QVector3D &point) const
Возвращает количество единиц направления() луча от начала() до точки point. По сути, эта функция вычисляет значение t, где point = origin() + t * direction(). Если точка point не лежит на луче, то используется ближайшая точка, лежащая на луче.
Если возвращаемое значение положительно, то точка point лежит перед началом() относительно вектора направления(). Если возвращаемое значение отрицательно, то точка point лежит позади начала() относительно вектора направления().
См. также point() и project().
void QRay3D::setDirection(const QVector3D &direction)
Устанавливает вектор направления этого луча на direction.
См. также direction() и setOrigin().
void QRay3D::setDistance(float distance)
См. также distance().
void QRay3D::setOrigin(const QVector3D &value)
Устанавливает точку начала этого луча на value.
См. также origin() и setDirection().
QRay3D &QRay3D::transform(const QMatrix4x4 &matrix)
Преобразует этот луч с помощью matrix, заменив origin() и direction() преобразованными версиями.
См. также transformed().
QRay3D QRay3D::transformed(const QMatrix4x4 &matrix) const
Возвращает новый луч, образованный преобразованием origin() и direction() с помощью matrix.
См. также transform().
bool QRay3D::operator!=(const QRay3D &other) const
Возвращает true если этот луч не совпадает с other; false в противном случае.
См. также operator==().
bool QRay3D::operator==(const QRay3D &other) const
Возвращает true если этот луч совпадает с other; false в противном случае.
См. также operator!=().
Связанные нечленные функции
bool qFuzzyCompare(const Qt3DCore::QRay3D &ray1, const Qt3DCore::QRay3D &ray2)
Возвращает true если ray1 и ray2 почти равны; false в противном случае.
QDataStream &Qt3DCore::operator>>(QDataStream &stream, Qt3DCore::QRay3D &ray)
Читает луч в 3D из заданного stream в заданный ray и возвращает ссылку на поток.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qt3dcore-qray3d.html