Ray

Луч, который испускается из начала координат в определенном направлении. Он используется классом Raycaster для осуществления рейкастинга. Рейкастинг используется для пикинга объектов (определение объектов в 3Д-пространстве, над которыми находится курсор мыши), а также для других целей.

Конструктор

Ray(origin : Vector3, direction : Vector3)

Создает новый Ray.

Свойства

.origin : Vector3

Начало координат луча. По умолчанию используется вектор с координатами (0, 0, 0).

.direction : Vector3

Направление луча. Оно должно быть нормализовано (с помощью Vector3.normalize), чтобы методы работали правильно. По умолчанию используется вектор с координатами (0, 0, -1).

Методы

.applyMatrix4(matrix4 : Matrix4) → Ray

matrix4Matrix4 для применения к данному лучу.

Преобразовывает текущий луч с помощью Matrix4.

.at(t : Float, target : Vector3) → Vector3

Получает Vector3, который находится на заданном расстоянии вдоль данного луча.

.clone() → Ray

Создает новый луч со свойствами origin и direction идентичными данному.

.closestPointToPoint(point : Vector3, target : Vector3) → Vector3

Получает точку вдоль данного луча, которая ближе всего к заданному Vector3.

.copy(ray : Ray) → Ray

Копирует свойства origin и direction direction из луча, поданного в качестве параметра в текущий луч.

.distanceSqToPoint(point : Vector3) → Float

point — точка для вычисления расстояния.

Получает квадратичное расстояние ближайшего расстояния между Ray и Vector3.

.distanceSqToSegment(v0 : Vector3, v1 : Vector3, optionalPointOnRay : Vector3, optionalPointOnSegment : Vector3) → Float

Получает квадратичное расстояние между данным лучом и отрезком прямой.

.distanceToPlane(plane : Plane) → Float

plane — плоскость для вычисления расстояния.

Получает расстояние от origin до Plane. Возвращает null, если луч не пересекает плоскость.

.distanceToPoint(point : Vector3) → Float

point — точка для вычисления расстояния.

Получает расстояние ближайшего сближения между Ray и точкой Vector3.

.equals(ray : Ray) → Boolean

ray — луч для сравнения.

Возвращает true, если этот и другой луч имеют одинаковые origin и direction.

.intersectBox(box : Box3, target : Vector3) → Vector3

Пересекает текущий луч с Box3, возвращая точку пересечения или null, если пересечения нет.

.intersectPlane(plane : Plane, target : Vector3) → Vector3

Пересекает текущий луч с плоскостью, возвращая точку пересечения или null, если пересечения нет.

.intersectSphere(sphere : Sphere, target : Vector3) → Vector3

Пересекает текущий луч со сферой, возвращая точку пересечения или null, если пересечения нет.

.intersectTriangle(a : Vector3, b : Vector3, c : Vector3, backfaceCulling : Boolean, target : Vector3) → Vector3

Пересекает текущий луч с треугольником, возвращая точку пересечения или null, если пересечения нет.

.intersectsBox(box : Box3) → Boolean

boxBox3 для пересечения.

Возвращает true, если текущий луч пересекается с Box3.

.intersectsPlane(plane : Plane) → Boolean

planePlane для пересечения.

Возвращает true, если текущий луч пересекается с плоскостью.

.intersectsSphere(sphere : Sphere) → Boolean

sphereSphere для пересечения.

Возвращает true, если текущий луч пересекается со сферой.

.lookAt(v : Vector3) → Ray

vвектор направления.

Меняет направление луча так, чтобы он указывал на вектор в мировых координатах.

.recast(t : Float) → Ray

t — расстояние.

Сдвигает начало текущего луча вдоль своего направления на указанное расстояние.

.set(origin : Vector3, direction : Vector3) → Ray

Устанавливает свойства origin и direction этого луча, копируя значения из заданных объектов.

Исходный файл

О том как получить исходный код этого модуля читайте тут.