BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox je ohraničujúca krabica orientovaná pozdĺž osí (AABB) definovaná dvoma Vector3 rohov: minimum (najnižšie x, y, z) a maximum (najvyššie x, y, z). Používa sa pre priestorové dotazy, ako sú testy bod‑v‑krabici, pomocníci pre orezávanie výrezov a odhad veľkosti na úrovni scény.

A BoundingBox môže byť v null (prázdny/neinicializovaný) stav pri vytvorení bez argumentov. Volanie merge() na null krabici ju inicializuje z prvého bodu alebo krabice, ktorý je poskytnutý.

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()Null (prázdna) ohraničujúca krabica
BoundingBox(minimum, maximum)Konštruuje z dvoch Vector3 rohov
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Konštruuje zo šiestich skalárnych hodnôt

Example

ExampleExampleExample
minimumVector3Roh s najmenšími hodnotami x, y, z. Vráti (+inf, +inf, +inf) pre null krabicu
maximumVector3Roh s najväčšími hodnotami x, y, z. Vráti (-inf, -inf, -inf) pre nulovú krabicu
centerVector3Stred medzi minimum a maximum; (0,0,0) pre nulovú krabicu
sizeVector3Rozsah podľa osi (maximum - minimum); (0,0,0) pre nulový box

Statické továrenské metódy

ExampleNávratový typExample
BoundingBox.get_null()BoundingBoxVráti nulový (prázdny) ohraničovací box
BoundingBox.get_infinite()BoundingBoxVráti nekonečný ohraničovací box zahŕňajúci celý priestor

Inštančné metódy

ExampleNávratový typExample
merge(point)NoneRozšíri box tak, aby zahŕňal Vector3, Vector4, alebo iný BoundingBox
merge(x, y, z)NoneRozšíri box tak, aby zahŕňal bod (x, y, z)
contains(point)boolExample True ak Vector3 bod je vo vnútri alebo na hranici
contains(box)boolExample True ak box je úplne v tomto boxe
overlaps_with(box)boolExample True ak sa dva boxy pretínajú
scale()floatVráti najväčšiu absolútnu hodnotu súradnice — užitočné ako hrubý odhad mierky scény

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)

Pozri tiež

 Slovenčina