BoundingBox — Aspose.3D FOSS for Python API Reference

Methods

BoundingBox je osově zarovnaná ohraničující krabice (AABB) definovaná dvěma Vector3 rohy: minimum (nejnižší x, y, z) a maximum (nejvyšší x, y, z). Používá se pro prostorové dotazy, jako jsou testy bod‑v‑krabici, pomocníci pro ořezávání výřezu a odhad velikosti na úrovni scény.

A BoundingBox může být v null (prázdný/neinicializovaný) stav při vytvoření bez argumentů. Volání merge() na null krabici ji inicializuje z prvního poskytnutého bodu nebo krabice.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (prázdná) ohraničující krabice
BoundingBox(minimum, maximum)Vytvoří z dvou Vector3 rohů
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Vytvoří ze šesti skalárních hodnot

Methods

MethodsMethodsMethods
minimumVector3Roh s nejmenšími hodnotami x, y, z. Vrací (+inf, +inf, +inf) pro null krabici
maximumVector3Roh s největšími hodnotami x, y, z. Vrací (-inf, -inf, -inf) pro nulový box
centerVector3Střed mezi minimum a maximum; (0,0,0) pro nulový box
sizeVector3Rozsah podle osy (maximum - minimum); (0,0,0) pro nulový box

Statické tovární metody

MethodsNávratový typMethods
BoundingBox.get_null()BoundingBoxVrací nulovou (prázdnou) bounding box
BoundingBox.get_infinite()BoundingBoxVrací nekonečnou bounding box zahrnující celý prostor

Metody instance

MethodsNávratový typMethods
merge(point)NoneRozšíří box tak, aby zahrnoval a Vector3, Vector4, nebo jiný BoundingBox
merge(x, y, z)NoneRozšíří rámeček tak, aby zahrnoval bod (x, y, z)
contains(point)boolMethods True pokud Vector3 bod je uvnitř nebo na hranici
contains(box)boolMethods True pokud box je zcela uvnitř tohoto boxu
overlaps_with(box)boolMethods True pokud se dva boxy protínají
scale()floatVrací největší absolutní hodnotu souřadnice — užitečné jako hrubý odhad měřítka scény

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

Viz také

 Čeština