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

# Box3

Определяет параллельный осям ограничивающий параллелепипед («бокс», AABB) в трехмерном пространстве.

## Пример

`const box = new v3d.Box3(); const mesh = new v3d.Mesh( new v3d.SphereGeometry(), new v3d.MeshBasicMaterial() ); // обновляем ограничивающий параллелепипед // требуется сделать однократно (для статической геометрии) mesh.geometry.computeBoundingBox(); // ... // в цикле анимации вычисляем ограничивающий параллелепипед в мировой системе координат box.copy(mesh.geometry.boundingBox).applyMatrix4(mesh.matrixWorld);`

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

### Box3(min : Vector3, max : Vector3)

- min — (необ.) Vector3, представляющий нижнюю (x, y, z) границу бокса. По умолчанию (+Infinity, +Infinity, +Infinity).
- max — (необ.) Vector3, представляющий верхнюю (x, y, z) границу бокса. По умолчанию (-Infinity, -Infinity, -Infinity).

Создает Box3, ограниченный min и max.

## Свойства

### # .isBox3 : Boolean

Флаг, указывающий что данный объект является экземпляром Box3. Только для чтения.

### # .min : Vector3

Vector3 представляющий нижнюю (x, y, z) границу бокса. По умолчанию `(+Infinity, +Infinity, +Infinity)`.

### # .max : Vector3

Vector3 представляющий верхнюю (x, y, z) границу бокса. По умолчанию `(-Infinity, -Infinity, -Infinity)`.

## Методы

### # .applyMatrix4(matrix : Matrix4) → this

matrix — Matrix4 для применения.

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

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

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

Ограничивает точку в границах бокса.

### # .clone() → Box3

Возвращает новый Box3 с теми же min и max, что и текущий.

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

box — Box3 для проверки на включение.

Возвращает `true`, если текущий бокс включает в себя box. Если текущий и box идентичны, эта функция также возвращает `true`.

### # .containsPoint(point : Vector3) → Boolean

point — Vector3 для проверки на включение.

Возвращает `true`, если указанная точка point лежит внутри или на границах данного бокса.

### # .copy(box : Box3) → this

box — Box3 для копирования.

Копирует значения min и max из box в текущий бокс.

### # .distanceToPoint(point : Vector3) → Float

point — точка до которой нужно измерить расстояние.

Возвращает расстояние от любого края бокса до указанной точки. Если точка лежит внутри бокса, расстояние будет равно `0`.

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

box — бокс для сравнения.

Возвращает `true`, если у текущего бокса и box одинаковые нижняя и верхняя границы.

### # .expandByObject(object : Object3D, precise : Boolean) → this

- object — объект-расширитель.
- precise — (необ.) расширять как можно меньше за счёт усложнения и времени расчётов. По умолчанию `false`.

Расширяет границы текущего бокса, чтобы включить в него заданный объект и его дочерние объекты, с учётом их трансформаций в мировой системе координат. В случае если `precise` не равен `true`, метод может привести к созданию более крупного бокса, чем это необходимо.

### # .expandByPoint(point : Vector3) → this

point — точка, которая должна быть включена в бокс.

Расширяет границы текущего бокса, чтобы включить точку.

### # .expandByScalar(scalar : Float) → this

scalar — расстояние, на которое нужно увеличить бокс.

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

### # .expandByVector(vector : Vector3) → this

vector — вектор-расширитель бокса.

Производит равностороннее расширение текущего бокса на вектор. Ширина текущего бокса будет увеличена на x-компонент вектора в обоих направлениях. Высота текущего бокса будет увеличена на y-компонент вектора в обоих направлениях. Глубина текущего бокса будет увеличена на компонент z вектора в обоих направлениях.

### # .getBoundingSphere(target : Sphere) → Sphere

target — результирующая сфера.

Получает сферу, ограничивающую данный бокс.

### # .getCenter(target : Vector3) → Vector3

target — результат будет скопирован в этот вектор.

Возвращает центральную точку бокса в виде вектора.

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

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

Возвращает положение точки в виде пропорции от ширины, высоты и глубины данного бокса.

### # .getSize(target : Vector3) → Vector3

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

Возвращает ширину, высоту и глубину текущего бокса.

### # .intersect(box : Box3) → this

box — бокс для расчёта пересечения.

Вычисляет пересечение текущего бокса и box, устанавливая верхнюю границу текущего бокса на меньшую из верхних границ двух боксов, а нижнюю границу текущего бокса на большую из нижних границ двух боксов. Если пересечения нет, делает текущий бокс пустым.

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

box — бокс для проверки пересечения.

Определяет, пересекает ли текущий бокс указанный box.

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

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

Определяет, пересекает ли текущий бокс указанную плоскость.

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

sphere — сфера для проверки пересечения.

Определяет, пересекает ли текущий бокс сферу.

### # .intersectsTriangle(triangle : Triangle) → Boolean

triangle — треугольник для проверки пересечения.

Определяет, пересекает ли текущий бокс указанный треугольник.

### # .isEmpty() → Boolean

Возвращает `true`, если этот бокс не включает точки в своих границах. Обратите внимание, что бокс с равными нижней и верхней границами все еще включает одну точку, общую для обеих границ.

### # .makeEmpty() → this

Делает текущий бокс пустым.

### # .scale(s : Vector3) → this

s — вектор для масштабирования.

Масштабирует текущий бокс с помощью указанного вектора.

### # .set(min : Vector3, max : Vector3) → this

- min — Vector3, представляющий нижнюю (x, y, z) границу бокса.
- max — Vector3, представляющий верхнюю (x, y, z) границу бокса.

Устанавливает нижнюю и верхнюю (x, y, z) границы данного бокса. Обратите внимание, что этот метод только копирует значения из заданных объектов.

### # .setFromArray(array : Array) → this

array — массив данных о положениях, которые будет охватывать результирующий бокс.

Устанавливает верхнюю и нижнюю границы текущего бокса, чтобы включить все данные из `array`.

### # .setFromBufferAttribute(attribute : BufferAttribute) → this

attribute — буферный атрибут с данными о положениях, которые будет охватывать результирующий бокс.

Устанавливает верхнюю и нижнюю границы текущего бокса, чтобы включить все данные из атрибута.

### # .setFromCenterAndSize(center : Vector3, size : Vector3) → this

- center — желаемое положение центра бокса.
- size — желаемые размеры бокса по x, y и z.

Центрирует текущий бокс по center и устанавливает его ширину, высоту и глубину в значения из вектора size.

### # .setFromObject(object : Object3D) → this

- object — Object3D для вычисления ограничивающего бокса.
- precise — (необ.) вычислить наименьший бокс в мировой системе координат за счёт увеличения сложности и времени расчётов. По умолчанию `false`.

Вычисляет область объекта Object3D (включая его дочерние объекты), выровненную по мировой оси, с учетом мировых преобразований объекта и его дочерних объектов. Функция может привести к тому, что бокс будет больше, чем это необходимо.

### # .setFromPoints(points : Array) → this

points — массив Vector3, который будет содержать результирующий бокс.

Устанавливает верхнюю и нижнюю границы этого бокса, чтобы включить все точки из points.

### # .translate(offset : Vector3) → this

offset — направление и расстояние смещения.

Добавляет смещение к верхней и нижней границам текущего бокса, эффективно перемещая его на offset единиц в трехмерном пространстве.

### # .union(box : Box3) → this

box — бокс, который будет объединен с текущим боксом.

Вычисляет объединение текущего бокса и указанного box, устанавливая верхнюю границу текущего бокса на большую из верхних границ двух боксов и нижнюю границу текущего бокса на меньшую из нижних границ двух боксов.

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

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