Ray - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать Ray в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# Ray

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

## Конструктор

### Ray(origin : Vector3, direction : Vector3)

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

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

## Свойства

### # .origin : Vector3

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

### # .direction : Vector3

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

## Методы

### # .applyMatrix4(matrix4 : Matrix4) → Ray

matrix4 — Matrix4 для применения к данному лучу.

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

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

- t — расстояние вдоль Ray для получения позиции.
- target — результат будет скопирован в этот Vector3.

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

### # .clone() → Ray

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

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

- point — точка, к которой нужно подойти ближе всего.
- target — результат будет скопирован в этот 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

- v0 — начало отрезка линии.
- v1 — конец отрезка линии.
- optionalPointOnRay — (необ.), если указан, получает точку на данном луче, которая ближе всего к отрезку.
- optionalPointOnSegment - (необ.), если указан, получает точку на отрезке прямой, которая ближе всего к данному лучу.

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

### # .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

- box — Box3 для пересечения.
- target — результат будет скопирован в этот Vector3.

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

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

- plane — Plane для пересечения.
- target — результат будет скопирован в этот Vector3.

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

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

- sphere — Sphere для пересечения.
- target — результат будет скопирован в этот Vector3.

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

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

- a, b, c — вершины треугольника.
- backfaceCulling — использовать ли backface culling.
- target — результат будет скопирован в этот Vector3.

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

### # .intersectsBox(box : Box3) → Boolean

box — Box3 для пересечения.

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

### # .intersectsPlane(plane : Plane) → Boolean

plane — Plane для пересечения.

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

### # .intersectsSphere(sphere : Sphere) → Boolean

sphere — Sphere для пересечения.

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

### # .lookAt(v : Vector3) → Ray

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

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

### # .recast(t : Float) → Ray

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

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

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

- origin — origin данного Ray.
- origin — direction данного Ray. Для правильной работы методов его необходимо нормализовать (с помощью Vector3.normalize).

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

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

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