BoundingBox

Methods

BoundingBox is een as-georiënteerde begrenzingsbox (AABB) gedefinieerd door twee Vector3 hoeken: minimum (laagste x, y, z) en maximum (hoogste x, y, z). Het wordt gebruikt voor ruimtelijke queries zoals point-in-box tests, frustum culling helpers, en scene-level size estimation.

Een BoundingBox kan zich bevinden in een null (leeg/ongeïnitieerd) toestand wanneer gemaakt zonder argumenten. Aanroepen merge() op een null box initialiseert het vanaf het eerste punt of de eerste doos die wordt opgegeven.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (lege) begrenzingsbox
BoundingBox(minimum, maximum)Construeert uit twee Vector3 hoeken
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Construeert uit zes scalare waarden

Methods

MethodsMethodsMethods
minimumVector3De hoek met de kleinste x, y, z waarden. Retourneert (+inf, +inf, +inf) voor een null box
maximumVector3De hoek met de grootste x, y, z waarden. Retourneert (-inf, -inf, -inf) voor een null box
centerVector3Middelpunt tussen minimum en maximum; (0,0,0) voor een null box
sizeVector3Uitbreiding per as (maximum - minimum); (0,0,0) voor een null box

Statische fabrieksmethoden

MethodsRetourtypeMethods
BoundingBox.get_null()BoundingBoxRetourneert een null (lege) bounding box
BoundingBox.get_infinite()BoundingBoxRetourneert een oneindige bounding box die de hele ruimte omvat

Instantiemethoden

MethodsRetourtypeMethods
merge(point)NoneBreidt de box uit om een Vector3, Vector4, of een andere BoundingBox
merge(x, y, z)NoneBreidt de box uit om het punt (x, y, z)
contains(point)boolMethods True als de Vector3 punt zich binnen of op de rand bevindt
contains(box)boolMethods True als box volledig binnen deze box ligt
overlaps_with(box)boolMethods True als de twee dozen elkaar kruisen
scale()floatRetourneert de grootste absolute coördinaatwaarde — nuttig als een ruwe schatting van de schaal van de scène

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)

Zie ook

 Nederlands