BoundingBox

Methods

BoundingBox ist ein achsenparalleles Begrenzungsfeld (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, wenn ohne Argumente erstellt. Aufruf von 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) Begrenzungsbox
BoundingBox(minimum, maximum)Konstruiert aus zwei Vector3 Ecken
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konstruktionen aus sechs Skalarwerten

Methods

MethodsMethodsMethods
minimumVector3Die Ecke mit den kleinsten x-, y- und z-Werten. Gibt zurück (+inf, +inf, +inf) für eine Null-Box
maximumVector3Die Ecke mit den größten x-, y- und 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) Begrenzungsbox zurück
BoundingBox.get_infinite()BoundingBoxGibt eine unendliche Begrenzungsbox 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 der Vector3 Punkt innerhalb oder auf der Grenze liegt
contains(box)boolMethods True wenn box ist 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 des Szenenmaßstabs

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)

Siehe auch

 Deutsch