BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox er en aksejusteret begrænsningsboks (AABB) defineret af to Vector3 hjørner: minimum (laveste x, y, z) og maximum (højeste x, y, z). Den bruges til rumlige forespørgsler såsom punkt‑i‑boks‑test, frustum culling‑hjælpere og størrelsesestimering på sceneniveau.

En BoundingBox kan være i en null (tom/ikke‑initialiseret) tilstand når den oprettes uden argumenter. At kalde merge() på en null-boks initialiserer den ud fra det første punkt eller den første boks, der er angivet.

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()Null (tom) begrænsningsboks
BoundingBox(minimum, maximum)Konstruerer fra to Vector3 hjørner
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konstruerer fra seks skalære værdier

Example

ExampleExampleExample
minimumVector3Hjørnet med de mindste x-, y- og z-værdier. Returnerer (+inf, +inf, +inf) for en null-boks
maximumVector3Hjørnet med de største x-, y- og z-værdier. Returnerer (-inf, -inf, -inf) for en null-boks
centerVector3Midtpunkt mellem minimum og maximum; (0,0,0) for en null-boks
sizeVector3Omfang pr. akse (maximum - minimum); (0,0,0) for en null-boks

Statiske fabriksmetoder

ExampleReturtypeExample
BoundingBox.get_null()BoundingBoxReturnerer en null (tom) afgrænsningsboks
BoundingBox.get_infinite()BoundingBoxReturnerer en uendelig afgrænsningsboks, der spænder over hele rummet

Instansmetoder

ExampleReturtypeExample
merge(point)NoneUdvider boksen til at inkludere en Vector3, Vector4, eller en anden BoundingBox
merge(x, y, z)NoneUdvider boksen til at inkludere punktet (x, y, z)
contains(point)boolExample True hvis Vector3 punktet er inden for eller på grænsen
contains(box)boolExample True hvis box er helt inden for denne boks
overlaps_with(box)boolExample True hvis de to bokse skærer hinanden
scale()floatReturnerer den største absolutte koordinatværdi — nyttig som et groft estimat af sceneskalaen

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 også

 Dansk