BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox este o cutie de delimitare aliniată pe axe (AABB) definită prin două Vector3 colțuri: minimum (cel mai mic x, y, z) și maximum (cel mai mare x, y, z). Este utilizată pentru interogări spațiale, cum ar fi testele punct‑în‑cutie, instrumente de culling al frustrumului și estimarea dimensiunii la nivel de scenă.

Un BoundingBox poate fi într-un null (gol/neinițializat) stare când este creat fără argumente. Apelarea merge() pe o cutie null o inițializează din primul punct sau cutie furnizată.

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()Cutie de delimitare nulă (goală)
BoundingBox(minimum, maximum)Construiește din două Vector3 colțuri
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Construiește din șase valori scalare

Example

ExampleExampleExample
minimumVector3Colțul cu cele mai mici valori x, y, z. Returnează (+inf, +inf, +inf) pentru o cutie nulă
maximumVector3Colțul cu cele mai mari valori x, y, z. Returnează (-inf, -inf, -inf) pentru o cutie nulă
centerVector3Punctul mijlociu dintre minimum și maximum; (0,0,0) pentru o cutie nulă
sizeVector3Extindere pe axă (maximum - minimum); (0,0,0) pentru o cutie nulă

Metode de fabrică statice

ExampleTip de returnareExample
BoundingBox.get_null()BoundingBoxReturnează o cutie de delimitare nulă (goală)
BoundingBox.get_infinite()BoundingBoxReturnează o cutie de delimitare infinită care acoperă tot spațiul

Metode de instanță

ExampleTip de returnareExample
merge(point)NoneExtinde cutia pentru a include un Vector3, Vector4, sau altul BoundingBox
merge(x, y, z)NoneExtinde cutia pentru a include punctul (x, y, z)
contains(point)boolExample True dacă Vector3 punctul este în interior sau pe margine
contains(box)boolExample True dacă box este complet în interiorul acestei cutii
overlaps_with(box)boolExample True dacă cele două cutii se intersectează
scale()floatReturnează cea mai mare valoare absolută a coordonatei — utilă ca o estimare brută a scalei scenei

Example

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)

Vezi și

 Română