BoundingBox

Methods

BoundingBox är en axelriktad begränsningslåda (AABB) definierad av två Vector3 hörn: minimum (lägsta x, y, z) och maximum (högsta x, y, z). Den används för rumsliga frågor såsom punkt-i-låda-tester, hjälpmedel för frustum‑culling och storleksuppskattning på scen‑nivå.

En BoundingBox kan vara i en null (tom/oinitialiserad) tillstånd när den skapas utan argument. Anropar merge() på en null låda initierar den den från den första punkten eller lådan som tillhandahålls.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (tom) begränsningslåda
BoundingBox(minimum, maximum)Konstrueras från två Vector3 hörn
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konstrueras från sex skalära värden

Methods

MethodsMethodsMethods
minimumVector3Hörnet med de minsta x-, y- och z‑värdena. Returnerar (+inf, +inf, +inf) för en null låda
maximumVector3Hörnet med de största x-, y- och z-värdena. Returnerar (-inf, -inf, -inf) för en null box
centerVector3Mittpunkt mellan minimum och maximum; (0,0,0) för en null box
sizeVector3Omfång per axel (maximum - minimum); (0,0,0) för en null box

Statiska fabriksmetoder

MethodsReturtypMethods
BoundingBox.get_null()BoundingBoxReturnerar en null (tom) bounding box
BoundingBox.get_infinite()BoundingBoxReturnerar en oändlig bounding box som sträcker sig över hela rymden

Instansmetoder

MethodsReturtypMethods
merge(point)NoneUtökar lådan för att inkludera en Vector3, Vector4, eller en annan BoundingBox
merge(x, y, z)NoneUtökar lådan för att inkludera punkten (x, y, z)
contains(point)boolMethods True om den Vector3 punkten är innanför eller på gränsen
contains(box)boolMethods True om box är helt inom den här rutan
overlaps_with(box)boolMethods True om de två lådorna skär varandra
scale()floatReturnerar det största absoluta koordinatvärdet — användbart som en grov uppskattning av scenens skala

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)

Se även

 Svenska