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)

Создает 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

matrixMatrix4 для применения.

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

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

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

.clone() → Box3

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

.containsBox(box : Box3) → Boolean

boxBox3 для проверки на включение.

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

.containsPoint(point : Vector3) → Boolean

pointVector3 для проверки на включение.

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

.copy(box : Box3) → this

boxBox3 для копирования.

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

.distanceToPoint(point : Vector3) → Float

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

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

.equals(box : Box3) → Boolean

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

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

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

Расширяет границы текущего бокса, чтобы включить в него заданный объект и его дочерние объекты, с учётом их трансформаций в мировой системе координат. В случае если 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

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

.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

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

.setFromArray(array : Array) → this

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

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

.setFromBufferAttribute(attribute : BufferAttribute) → this

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

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

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

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

.setFromObject(object : Object3D) → this

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

.setFromPoints(points : Array) → this

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

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

.translate(offset : Vector3) → this

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

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

.union(box : Box3) → this

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

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

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

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