BoundingBox

Methods

BoundingBox ir ass‑līdzināta robežkaste (AABB), kas definēta ar divām Vector3 stūri: minimum (zemākais x, y, z) un maximum (augstākais x, y, z). To tiek izmantots telpisko vaicājumu veikšanai, piemēram, punktu‑kastes testiem, redzes lauka izgriešanas palīgiem un ainas līmeņa izmēra novērtēšanai.

A BoundingBox var būt null (tukša/neinicializēta) stāvoklis, kad izveidots bez argumentiem. Izsaucot merge() uz null box inicializē to no pirmā punkta vai kastes, kas norādīta.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (tukša) robežkaste
BoundingBox(minimum, maximum)Konstrukcijas no diviem Vector3 stūri
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Izveido no sešām skalārām vērtībām

Methods

MethodsMethodsMethods
minimumVector3Stūris ar mazākajām x, y, z vērtībām. Atgriež (+inf, +inf, +inf) nulles kastei
maximumVector3Stūris ar lielākajām x, y, z vērtībām. Atgriež (-inf, -inf, -inf) nulles kastei
centerVector3Viduspunkts starp minimum un maximum; (0,0,0) nulles kastei
sizeVector3Izmērs pa asīm (maximum - minimum); (0,0,0) nulles kastei

Statiskās ražotāja metodes

MethodsAtgriešanas tipsMethods
BoundingBox.get_null()BoundingBoxAtgriež nulles (tukšu) robežkasti
BoundingBox.get_infinite()BoundingBoxAtgriež bezgalīgu robežkasti, kas aptver visu telpu

Instanču metodes

MethodsAtgriešanas tipsMethods
merge(point)NonePaplašina kasti, lai iekļautu Vector3, Vector4, vai citu BoundingBox
merge(x, y, z)NonePaplašina kasti, lai iekļautu punktu (x, y, z)
contains(point)boolMethods True ja Vector3 punkts ir iekšpusē vai uz robežas
contains(box)boolMethods True ja box ir pilnīgi šajā kastē
overlaps_with(box)boolMethods True ja divas kastes krustojas
scale()floatAtgriež lielāko absolūto koordinātu vērtību — noderīgi kā aptuvens ainas mēroga novērtējums

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)

Skatīt arī

 Latviešu