BoundingBox — Aspose.3D FOSS for Python API Reference

Enumerations

BoundingBox jest axis-aligned bounding box (AABB) zdefiniowany przez dwa Vector3 wierzchołki: minimum (najmniejsze x, y, z) i maximum (najwyższe x, y, z). Jest używany do zapytań przestrzennych, takich jak point-in-box tests, frustum culling helpers i scene-level size estimation.

A BoundingBox może być w null (pusty/niezainicjowany) stan, gdy utworzono bez argumentów. Wywołanie merge() w przypadku null box inicjalizuje go od pierwszego podanego punktu lub boxa.

Enumerations: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Enumerations

EnumerationsEnumerations
BoundingBox()Null (pusty) bounding box
BoundingBox(minimum, maximum)Tworzy z dwóch Vector3 rogi
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Tworzy z sześciu wartości skalarnych

Enumerations

EnumerationsEnumerationsEnumerations
minimumVector3Róg o najmniejszych wartościach x, y, z. Zwraca (+inf, +inf, +inf) dla pustego pudełka
maximumVector3Róg o największych wartościach x, y, z. Zwraca (-inf, -inf, -inf) dla pustego pudełka
centerVector3Środek pomiędzy minimum i maximum; (0,0,0) dla pustego pudełka
sizeVector3Rozmiar wzdłuż osi (maximum - minimum); (0,0,0) dla pustego pudełka

Statyczne metody fabryczne

EnumerationsTyp zwracanyEnumerations
BoundingBox.get_null()BoundingBoxZwraca pustą (null) ramkę ograniczającą
BoundingBox.get_infinite()BoundingBoxZwraca nieskończoną ramkę ograniczającą obejmującą całą przestrzeń

Metody instancji

EnumerationsTyp zwracanyEnumerations
merge(point)NoneRozszerza ramkę, aby uwzględnić a Vector3, Vector4, lub inny BoundingBox
merge(x, y, z)NoneRozszerza ramkę, aby uwzględnić punkt (x, y, z)
contains(point)boolEnumerations True jeśli Vector3 punkt znajduje się wewnątrz lub na granicy
contains(box)boolEnumerations True jeśli box znajduje się całkowicie w tym pudełku
overlaps_with(box)boolEnumerations True jeśli dwa pudełka się przecinają
scale()floatZwraca największą wartość bezwzględną współrzędnej — przydatną jako przybliżone oszacowanie skali sceny

Enumerations

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)

Zobacz także

 Polski