BoundingBox

Methods

BoundingBox jest pudełkiem ograniczającym wyrównanym do osi (AABB) zdefiniowanym 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 testy punkt-w-pudełku, frustum culling helpers oraz szacowanie rozmiaru na poziomie sceny.

A BoundingBox może znajdować się w a null (pusty/niezainicjowany) stan, gdy utworzono bez argumentów. Wywołanie merge() na null box inicjalizuje go od pierwszego podanego punktu lub pudełka.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (pusty) prostokąt ograniczający
BoundingBox(minimum, maximum)Konstrukcje z dwóch Vector3 rogi
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konstrukcje z sześciu wartości skalarnych

Methods

MethodsMethodsMethods
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
sizeVector3Rozciągłość na osi (maximum - minimum); (0,0,0) dla pustego pudełka

Statyczne metody fabryczne

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

Metody instancji

MethodsTyp zwracanyMethods
merge(point)NoneRozszerza ramkę, aby zawierała Vector3, Vector4, lub inną BoundingBox
merge(x, y, z)NoneRozszerza ramkę, aby zawierała punkt (x, y, z)
contains(point)boolMethods True jeśli Vector3 punkt znajduje się wewnątrz lub na granicy
contains(box)boolMethods True jeśli box jest całkowicie w tym pudełku
overlaps_with(box)boolMethods 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

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)

Zobacz także

 Polski