BoundingBox

Methods

BoundingBox είναι ένα πλαίσιο περιβάλλουσας ευθυγραμμισμένο με τους άξονες (AABB) που ορίζεται από δύο Vector3 γωνίες: minimum (χαμηλότερο x, y, z) και maximum (υψηλότερο x, y, z). Χρησιμοποιείται για χωρικά ερωτήματα όπως δοκιμές σημείου‑σε‑κουτί, βοηθήματα frustum culling, και εκτίμηση μεγέθους σε επίπεδο σκηνής.

Ένα BoundingBox μπορεί να βρίσκεται σε ένα null (κενή/μη αρχικοποιημένη) κατάσταση όταν δημιουργείται χωρίς ορίσματα. Καλώντας merge() σε ένα null box το αρχικοποιεί από το πρώτο σημείο ή το πρώτο κουτί που παρέχεται.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (κενό) bounding box
BoundingBox(minimum, maximum)Κατασκευές από δύο Vector3 γωνίες
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Δημιουργεί από έξι αριθμητικές τιμές

Methods

MethodsMethodsMethods
minimumVector3Η γωνία με τις μικρότερες τιμές x, y, z. Επιστρέφει (+inf, +inf, +inf) για ένα μηδενικό κουτί
maximumVector3Η γωνία με τις μεγαλύτερες τιμές x, y, z. Επιστρέφει (-inf, -inf, -inf) για ένα null box
centerVector3Μεσαίο σημείο μεταξύ minimum και maximum; (0,0,0) για ένα null box
sizeVector3Έκταση ανά άξονα (maximum - minimum); (0,0,0) για ένα null box

Στατικές μέθοδοι κατασκευής

MethodsΤύπος ΕπιστροφήςMethods
BoundingBox.get_null()BoundingBoxΕπιστρέφει ένα null (κενό) bounding box
BoundingBox.get_infinite()BoundingBoxΕπιστρέφει ένα άπειρο πλαίσιο οριοθέτησης που εκτείνεται σε όλο το χώρο

Μέθοδοι αντικειμένου

MethodsΤύπος ΕπιστροφήςMethods
merge(point)NoneΕπεκτείνει το πλαίσιο ώστε να περιλαμβάνει ένα Vector3, Vector4, ή άλλο BoundingBox
merge(x, y, z)NoneΕπεκτείνει το πλαίσιο ώστε να περιλαμβάνει το σημείο (x, y, z)
contains(point)boolMethods True αν το Vector3 το σημείο είναι μέσα ή στην άκρη
contains(box)boolMethods True αν box είναι εντελώς μέσα σε αυτό το κουτί
overlaps_with(box)boolMethods True αν τα δύο κουτιά τέμνονται
scale()floatΕπιστρέφει τη μεγαλύτερη απόλυτη τιμή συντεταγμένης — χρήσιμη ως μια αδρή εκτίμηση κλίμακας σκηνής

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)

Δείτε επίσης

 Ελληνικά