BoundingBox — Aspose.3D FOSS for Python API Reference

Enumerations

BoundingBox je osno poravnan ograničavajući kvadar (AABB) definiran s dva Vector3 ugla: minimum (najmanji x, y, z) i maximum (najveći x, y, z). Koristi se za prostorne upite poput testova točka‑u‑kvadar, pomoćnika za frustum culling i procjene veličine na razini scene.

A BoundingBox može biti u null (prazno/neinicijalizirano) stanje kada je stvoren bez argumenata. Pozivanje merge() na null kvadar inicijalizira ga iz prve točke ili kvadra koji su navedeni.

Enumerations: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Enumerations

EnumerationsEnumerations
BoundingBox()Null (prazan) ograničavajući kvadar
BoundingBox(minimum, maximum)Kreira iz dva Vector3 ugla
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Kreira iz šest skalarnih vrijednosti

Enumerations

EnumerationsEnumerationsEnumerations
minimumVector3Ugao s najmanjim x, y, z vrijednostima. Vraća (+inf, +inf, +inf) za null kvadar
maximumVector3Ugao s najvećim x, y, z vrijednostima. Vraća (-inf, -inf, -inf) za null box
centerVector3Srednja točka između minimum i maximum; (0,0,0) za null box
sizeVector3Opseg po osi (maximum - minimum); (0,0,0) za null kutiju

Statičke tvorničke metode

EnumerationsTip povratne vrijednostiEnumerations
BoundingBox.get_null()BoundingBoxVraća null (praznu) ograničavajuću kutiju
BoundingBox.get_infinite()BoundingBoxVraća beskonačnu ograničavajuću kutiju koja obuhvaća sav prostor

Metode instance

EnumerationsTip povratne vrijednostiEnumerations
merge(point)NoneProširuje kutiju da uključi Vector3, Vector4, ili drugi BoundingBox
merge(x, y, z)NoneProširuje kutiju da uključi točku (x, y, z)
contains(point)boolEnumerations True ako je Vector3 točka je unutar ili na granici
contains(box)boolEnumerations True ako box je u potpunosti unutar ove kutije
overlaps_with(box)boolEnumerations True ako se dvije kutije preklapaju
scale()floatVraća najveću apsolutnu vrijednost koordinate — korisno kao gruba procjena skale scene

Enumerations

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đer

 Hrvatski