BoundingBox

Methods

BoundingBox является прямоугольным ограничивающим объёмом (AABB), определённым двумя Vector3 углами: minimum (наименьшие x, y, z) и maximum (наибольшие x, y, z). Он используется для пространственных запросов, таких как тесты point-in-box, вспомогательные функции отсечения фрустума и оценка размеров на уровне сцены.

A BoundingBox может быть в a null (пустое/неинициализированное) состояние при создании без аргументов. Вызов merge() на null box инициализирует его из первой предоставленной точки или бокса.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (пустой) ограничивающий прямоугольник
BoundingBox(minimum, maximum)Создаёт из двух Vector3 углов
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Конструирует из шести скалярных значений

Methods

MethodsMethodsMethods
minimumVector3Угол с наименьшими значениями x, y, z. Возвращает (+inf, +inf, +inf) для нулевой коробки
maximumVector3Угол с наибольшими значениями x, y, z. Возвращает (-inf, -inf, -inf) для нулевой коробки
centerVector3Средняя точка между minimum и maximum; (0,0,0) для нулевого бокса
sizeVector3Размер по оси (maximum - minimum); (0,0,0) для нулевого бокса

Статические фабричные методы

MethodsТип возвращаемого значенияMethods
BoundingBox.get_null()BoundingBoxВозвращает нулевой (пустой) ограничивающий бокс
BoundingBox.get_infinite()BoundingBoxВозвращает бесконечный ограничивающий ящик, охватывающий всё пространство

Методы экземпляра

MethodsТип возвращаемого значенияMethods
merge(point)NoneРасширяет ящик, чтобы включить Vector3, Vector4, или другой BoundingBox
merge(x, y, z)NoneРасширяет ящик, чтобы включить точку (x, y, z)
contains(point)boolMethods True если Vector3 точка находится внутри или на границе
contains(box)boolMethods True если box полностью находится внутри этой коробки
overlaps_with(box)boolMethods True если два бокса пересекаются
scale()floatВозвращает наибольшее абсолютное значение координаты — полезно как грубая оценка масштаба сцены

Methods

from aspose.threed.utilities import BoundingBox, Vector3

# Build a bounding box from a list of points
bb = BoundingBox()
points = [
    Vector3(0.0, 0.0, 0.0),
    Vector3(1.0, 2.0, 3.0),
    Vector3(-1.0, 0.5, 1.5),
]
for p in points:
    bb.merge(p)

print(bb.minimum)   # Vector3(-1.0, 0.0, 0.0)
print(bb.maximum)   # Vector3(1.0, 2.0, 3.0)
print(bb.center)    # Vector3(0.0, 1.0, 1.5)
print(bb.size)      # Vector3(2.0, 2.0, 3.0)

# Point containment
print(bb.contains(Vector3(0.5, 1.0, 1.5)))   # True
print(bb.contains(Vector3(5.0, 0.0, 0.0)))   # False

# Box containment
inner = BoundingBox(Vector3(0, 0, 0), Vector3(0.5, 0.5, 0.5))
print(bb.contains(inner))   # True

# Overlap test
other = BoundingBox(Vector3(0.5, 0.5, 0.5), Vector3(2.0, 2.0, 2.0))
print(bb.overlaps_with(other))   # True

# Retrieve from a node
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.utilities import Vector4

scene = Scene()
mesh = Mesh()
# Use _control_points to mutate the backing list (control_points returns a copy)
mesh._control_points.append(Vector4(-1, 0, 0, 1))
mesh._control_points.append(Vector4( 1, 0, 0, 1))
mesh._control_points.append(Vector4( 0, 1, 0, 1))
mesh.create_polygon(0, 1, 2)
node = scene.root_node.create_child_node("tri", mesh)
node_bb = node.get_bounding_box()
print(node_bb.minimum)
print(node_bb.maximum)

См. также

 Русский