BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox is een as-uitgelijnde begrenzingsdoos (AABB) gedefinieerd door twee Vector3 hoeken: minimum (laagste x, y, z) en maximum (hoogste x, y, z). Het wordt gebruikt voor ruimtelijke queries zoals punt-in-doos tests, frustum culling helpers en schatting van de grootte op scenenniveau.

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.

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()Null (lege) begrenzingsdoos
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

Example

ExampleExampleExample
minimumVector3De hoek met de kleinste x-, y- en z-waarden. Retourneert (+inf, +inf, +inf) voor een null box
maximumVector3De hoek met de grootste x-, y- en 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 Factory-methoden

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

Instantiemethoden

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

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)

Zie ook

 Nederlands