BoundingBox

Methods

BoundingBox je ohraničujúca krabica orientovaná pozdĺž osí (AABB) definovaná dvoma Vector3 rohov: minimum (najnižšie x, y, z) a maximum (najvyššie x, y, z). Používa sa pre priestorové dotazy, ako sú testy bod‑v‑krabici, pomocníci pre orezávanie výrezov a odhad veľkosti na úrovni scény.

A BoundingBox môže byť v null (prázdny/neinicializovaný) stav pri vytvorení bez argumentov. Volanie merge() na null krabici ju inicializuje z prvého bodu alebo krabice, ktorý je poskytnutý.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (prázdna) ohraničujúca krabica
BoundingBox(minimum, maximum)Konštruuje z dvoch Vector3 rohov
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konštruuje zo šiestich skalárnych hodnôt

Methods

MethodsMethodsMethods
minimumVector3Roh s najmenšími hodnotami x, y, z. Vráti (+inf, +inf, +inf) pre null krabicu
maximumVector3Roh s najväčšími hodnotami x, y, z. Vráti (-inf, -inf, -inf) pre nulovú krabicu
centerVector3Stred medzi minimum a maximum; (0,0,0) pre nulovú krabicu
sizeVector3Rozsah podľa osi (maximum - minimum); (0,0,0) pre nulový box

Statické továrenské metódy

MethodsNávratový typMethods
BoundingBox.get_null()BoundingBoxVráti nulový (prázdny) ohraničovací box
BoundingBox.get_infinite()BoundingBoxVráti nekonečný ohraničovací box zahŕňajúci celý priestor

Inštančné metódy

MethodsNávratový typMethods
merge(point)NoneRozšíri box tak, aby zahŕňal a Vector3, Vector4, alebo ďalší BoundingBox
merge(x, y, z)NoneRozšíri box tak, aby zahŕňal bod (x, y, z)
contains(point)boolMethods True ak Vector3 bod je vo vnútri alebo na hranici
contains(box)boolMethods True ak box je úplne v tomto boxe
overlaps_with(box)boolMethods True ak sa dva boxy pretínajú
scale()floatVráti najväčšiu absolútnu hodnotu súradnice — užitočné ako hrubý odhad mierky 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)

Pozri tiež

 Slovenčina