BoundingBox

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ří se ze dvou Vector3 rohů
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Vytvoří se 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í nulový (prázdný) ohraničující box
BoundingBox.get_infinite()BoundingBoxVrací nekonečný ohraničující box zahrnující celý prostor

Instanční metody

MethodsNávratový typMethods
merge(point)NoneRozšíří box tak, aby zahrnoval a Vector3, Vector4, nebo jiný BoundingBox
merge(x, y, z)NoneRozšíří box 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()
# 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)

Viz také

 Čeština