BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox je pravougaoni okvir (AABB) usklađen s osama definisan sa dva Vector3 temena: minimum (najmanji x, y, z) i maximum (najveći x, y, z). Koristi se za prostorne upite kao što su testovi tačka‑u‑okviru, pomoćni alati za culling vidnog polja i procena veličine na nivou scene.

A BoundingBox može biti u null (prazno/neinicijalizovano) stanje kada je kreirano bez argumenata. Pozivanje merge() na null box inicijalizuje je iz prve tačke ili kutije koja je prosleđena.

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()Null (prazna) ograničavajuća kutija
BoundingBox(minimum, maximum)Konstruiše iz dva Vector3 uglova
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konstruiše iz šest skalarnih vrednosti

Example

ExampleExampleExample
minimumVector3Ugao sa najmanjim x, y, z vrednostima. Vraća (+inf, +inf, +inf) za null box
maximumVector3Ugao sa najvećim x, y, z vrednostima. Vraća (-inf, -inf, -inf) za null kutiju
centerVector3Srednja tačka između minimum i maximum; (0,0,0) za null kutiju
sizeVector3Raspon po osi (maximum - minimum); (0,0,0) za null kutiju

Statičke metode fabrike

ExampleTip povratne vrednostiExample
BoundingBox.get_null()BoundingBoxVraća null (praznu) ograničavajuću kutiju
BoundingBox.get_infinite()BoundingBoxVraća beskonačnu ograničavajuću kutiju koja obuhvata sav prostor

Metode instance

ExampleTip povratne vrednostiExample
merge(point)NoneProširuje kutiju da uključi Vector3, Vector4, ili drugi BoundingBox
merge(x, y, z)NoneProširuje kutiju da uključi tačku (x, y, z)
contains(point)boolExample True ako Vector3 tačka je unutar ili na granici
contains(box)boolExample True ako box je potpuno unutar ove kutije
overlaps_with(box)boolExample True ako se dva okvira presecaju
scale()floatVraća najveću apsolutnu vrednost koordinate — korisno kao gruba procena skale scene

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)

Vidi takođe

 Српски