BoundingBox — Aspose.3D FOSS for Python API Reference

Methods

BoundingBox ist ein achsenparalleles Bounding-Box (AABB), definiert durch zwei Vector3 Ecken: minimum (niedrigste x, y, z) und maximum (höchste x, y, z). Es wird für räumliche Abfragen wie Punkt‑im‑Kasten‑Tests, Frustum‑Culling‑Hilfen und Szenen‑größen‑Schätzungen verwendet.

Ein BoundingBox kann sich in einem null (leerer/ungeinitialisierter) Zustand befinden, wenn es ohne Argumente erstellt wird. Aufrufen merge() auf einer null-Box initialisiert sie aus dem ersten angegebenen Punkt oder der ersten Box.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (leere) Bounding-Box
BoundingBox(minimum, maximum)Konstruktionen aus zwei Vector3 Ecken
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konstruktionen aus sechs skalaren Werten

Methods

MethodsMethodsMethods
minimumVector3Die Ecke mit den kleinsten x, y, z-Werten. Gibt zurück (+inf, +inf, +inf) für eine Null-Box
maximumVector3Die Ecke mit den größten x, y, z-Werten. Gibt zurück (-inf, -inf, -inf) für eine Null-Box
centerVector3Mittelpunkt zwischen minimum und maximum; (0,0,0) für eine Null-Box
sizeVector3Ausdehnung pro Achse (maximum - minimum); (0,0,0) für eine Null-Box

Statische Fabrikmethoden

MethodsRückgabetypMethods
BoundingBox.get_null()BoundingBoxGibt eine Null-(leere) Bounding Box zurück
BoundingBox.get_infinite()BoundingBoxGibt eine unendliche Bounding Box zurück, die den gesamten Raum umfasst

Instanzmethoden

MethodsRückgabetypMethods
merge(point)NoneErweitert die Box, um ein Vector3, Vector4, oder ein anderes BoundingBox
merge(x, y, z)NoneErweitert die Box, um den Punkt einzuschließen (x, y, z)
contains(point)boolMethods True wenn die Vector3 Punkt liegt innerhalb oder auf der Grenze
contains(box)boolMethods True wenn box liegt vollständig innerhalb dieser Box
overlaps_with(box)boolMethods True wenn die beiden Boxen sich überschneiden
scale()floatGibt den größten absoluten Koordinatenwert zurück — nützlich als grobe Schätzung der Szenenskala

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)

Siehe auch

 Deutsch