BoundingBox

Methods

BoundingBox on akselisuunnassa oleva rajaava laatikko (AABB), joka määritellään kahdella Vector3 kulmalla: minimum (pienin x, y, z) ja maximum (korkein x, y, z). Sitä käytetään spatiaalisiin kyselyihin, kuten piste‑laatikko‑testiin, näkökentän leikkausapureihin ja kohtauksen tason koon arviointiin.

A BoundingBox voi olla null (tyhjä/alustamaton) tila, kun se luodaan ilman argumentteja. Kutsumalla merge() null-laatikossa alustaa sen ensimmäisestä annetusta pisteestä tai laatikosta.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (tyhjä) rajaava laatikko
BoundingBox(minimum, maximum)Rakenteet kahdesta Vector3 kulmat
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Rakenteet kuudesta skalaarisesta arvosta

Methods

MethodsMethodsMethods
minimumVector3Kulma, jonka x-, y- ja z-arvot ovat pienimmät. Palauttaa (+inf, +inf, +inf) null-laatikolle
maximumVector3Kulma, jonka x-, y- ja z-arvot ovat suurimmat. Palauttaa (-inf, -inf, -inf) null-laatikolle
centerVector3Keskipiste välillä minimum ja maximum; (0,0,0) null-laatikolle
sizeVector3Laajuus per akseli (maximum - minimum); (0,0,0) nullilaatikolle

Staattiset tehdasmenetelmät

MethodsPaluuarvon tyyppiMethods
BoundingBox.get_null()BoundingBoxPalauttaa null (tyhjän) rajauslaatikon
BoundingBox.get_infinite()BoundingBoxPalauttaa äärettömän rajauslaatikon, joka kattaa koko avaruuden

Instanssimenetelmät

MethodsPaluuarvon tyyppiMethods
merge(point)NoneLaajentaa laatikkoa sisällyttämään Vector3, Vector4, tai toinen BoundingBox
merge(x, y, z)NoneLaajentaa laatikkoa sisällyttämään pisteen (x, y, z)
contains(point)boolMethods True jos Vector3 piste on sisällä tai rajan päällä
contains(box)boolMethods True jos box on kokonaan tämän laatikon sisällä
overlaps_with(box)boolMethods True jos kaksi laatikkoa leikkaavat
scale()floatPalauttaa suurimman itseisarvoisen koordinaattiarvon — hyödyllinen karkean kohtauksen mittakaavan arviona

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)

Katso myös

 Suomi