BoundingBox

Methods

BoundingBox yra ašies lygiavietė ribinė dėžutė (AABB), apibrėžta pagal du Vector3 kampus: minimum (mažiausi x, y, z) ir maximum (didžiausi x, y, z). Ji naudojama erdviniams užklausoms, tokioms kaip taško-dėžutės testai, frustumų išmetimo pagalbiniai įrankiai ir scenos lygmens dydžio įvertinimas.

A BoundingBox gali būti null (tuščia/neinicijuota) būsena, kai sukuriama be argumentų. Iškviečiant merge() nulinėje dėžutėje inicijuoja ją nuo pirmojo pateikto taško arba dėžutės.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Nulinė (tuščia) ribinė dėžutė
BoundingBox(minimum, maximum)Kuria iš dviejų Vector3 kampų
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Sukuria iš šešių skaliarinių reikšmių

Methods

MethodsMethodsMethods
minimumVector3Kampas su mažiausiomis x, y, z reikšmėmis. Grąžina (+inf, +inf, +inf) null box
maximumVector3Kampas su didžiausiomis x, y, z reikšmėmis. Grąžina (-inf, -inf, -inf) nullinei dėžei
centerVector3Vidurio taškas tarp minimum ir maximum; (0,0,0) nullinei dėžei
sizeVector3Išsiplėtimas per ašį (maximum - minimum); (0,0,0) nullinei dėžei

Statiniai gamykliniai metodai

MethodsGrąžinimo tipasMethods
BoundingBox.get_null()BoundingBoxGrąžina null (tuščią) ribinę dėžę
BoundingBox.get_infinite()BoundingBoxGrąžina begalinę ribojančią dėžutę, apimančią visą erdvę

Instanciniai metodai

MethodsGrąžinimo tipasMethods
merge(point)NoneIšplečia dėžutę, kad įtrauktų Vector3, Vector4, arba kitą BoundingBox
merge(x, y, z)NoneIšplečia dėžutę, kad įtrauktų tašką (x, y, z)
contains(point)boolMethods True jei Vector3 taškas yra viduje arba ant ribos
contains(box)boolMethods True jei box yra visiškai šioje dėžutėje
overlaps_with(box)boolMethods True jei dvi dėžutės kertasi
scale()floatGrąžina didžiausią absoliutų koordinatės reikšmę — naudinga kaip apytikslis scenos mastelio įvertinimas

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)

Žr. taip pat

 Lietuvių