BoundingBox — Aspose.3D FOSS for Python API Reference

Overview

BoundingBox є осьовим (axis-aligned) обмежувальним коробом (AABB), визначеним двома Vector3 кутами: minimum (найнижчі x, y, z) і maximum (найвищі x, y, z). Використовується для просторових запитів, таких як тестування точки в коробці, допоміжні засоби відсікання фрустуму та оцінка розмірів на рівні сцени.

A BoundingBox може бути у null (порожньому/неініціалізованому) стані, коли створюється без аргументів. Виклик merge() на null box ініціалізує її з першої наданої точки або коробки.

Overview: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Overview

OverviewOverview
BoundingBox()Null (порожня) bounding box
BoundingBox(minimum, maximum)Конструює з двох Vector3 кутів
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Конструює з шести скалярних значень

Overview

OverviewOverviewOverview
minimumVector3Кут з найменшими значеннями x, y, z. Повертає (+inf, +inf, +inf) для null box
maximumVector3Кут з найбільшими значеннями x, y, z. Повертає (-inf, -inf, -inf) для null box
centerVector3Середина між minimum і maximum; (0,0,0) для null box
sizeVector3Протяжність по осі (maximum - minimum); (0,0,0) для null box

Статичні фабричні методи

OverviewТип поверненняOverview
BoundingBox.get_null()BoundingBoxПовертає null (порожню) обмежувальну коробку
BoundingBox.get_infinite()BoundingBoxПовертає нескінченну обмежувальну коробку, що охоплює весь простір

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

OverviewТип поверненняOverview
merge(point)NoneРозширює коробку, щоб включити Vector3, Vector4, або інший BoundingBox
merge(x, y, z)NoneРозширює коробку, щоб включити точку (x, y, z)
contains(point)boolOverview True якщо Vector3 точка знаходиться всередині або на межі
contains(box)boolOverview True якщо box повністю знаходиться в цьому коробці
overlaps_with(box)boolOverview True якщо два коробки перетинаються
scale()floatПовертає найбільше абсолютне значення координати — корисно як приблизна оцінка масштабу сцени

Overview

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()
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)

Див. також

 Українська