BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox är en axelriktad avgränsningslåda (AABB) som definieras 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‑test, frustum‑culling‑hjälpmedel 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 box initierar den den från den första punkten eller lådan som tillhandahålls.

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()Null (tom) avgrä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

Example

ExampleExampleExample
minimumVector3Hörnet med de minsta x-, y- och z‑värdena. Returnerar (+inf, +inf, +inf) för en null box
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
sizeVector3Utsträckning per axel (maximum - minimum); (0,0,0) för en null box

Statisk fabriksmetoder

ExampleReturtypExample
BoundingBox.get_null()BoundingBoxReturnerar en null (tom) avgränsningslåda
BoundingBox.get_infinite()BoundingBoxReturnerar en oändlig avgränsningslåda som sträcker sig över hela rymden

Instansmetoder

ExampleReturtypExample
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)boolExample True om Vector3 punkten är innanför eller på gränsen
contains(box)boolExample True om box är helt inom denna låda
overlaps_with(box)boolExample 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

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)

Se även

 Svenska