BoundingBox

Methods

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 tests, frustum culling‑hjælpere og sceneniveau størrelsesestimering.

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

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
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

Methods

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

Statiske fabriksmetoder

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

Instansmetoder

MethodsReturtypeMethods
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)boolMethods True hvis den Vector3 punktet er inden for eller på grænsen
contains(box)boolMethods True hvis box er fuldstændig inden for denne boks
overlaps_with(box)boolMethods True hvis de to bokse skærer hinanden
scale()floatReturnerer den største absolutte koordinatværdi — nyttig som et groft estimat af scenens skala

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)

Se også

 Dansk