BoundingBox

Methods

BoundingBox הוא תיבת גבול מיושרת לציר (AABB) המוגדרת על ידי שני Vector3 פינות: minimum (הנמוך ביותר x, y, z) ו maximum (הגבוה ביותר x, y, z). הוא משמש לשאילתות מרחביות כגון מבחני נקודה-בתיבה, עוזרי חיתוך פרסמט, והערכת גודל ברמת הסצנה.

A BoundingBox יכול להיות ב null (ריק/לא מאותחל) מצב כאשר נוצר ללא ארגומנטים. קריאה merge() על null box מאתחלת אותה מהנקודה או התיבה הראשונה שסופקה.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (ריק) תיבת גבול
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) לקופסה ריקה
centerVector3נקודת האמצע בין minimum ו maximum; (0,0,0) לקופסה ריקה
sizeVector3היקף לכל ציר (maximum - minimum); (0,0,0) לתיבה ריקה

מתודות יצרן סטטיות

Methodsסוג החזרהMethods
BoundingBox.get_null()BoundingBoxמחזיר תיבה תוחמת ריקה (null)
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)

ראה גם

 עברית