BoundingBox — Aspose.3D FOSS for Python API Reference

Example

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

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

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()תיבת גבול Null (ריקה)
BoundingBox(minimum, maximum)בונה משני Vector3 קצוות
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)בונה משישה ערכי סקלר

Example

ExampleExampleExample
minimumVector3הקצה עם ערכי x, y, z הקטנים ביותר. מחזיר (+inf, +inf, +inf) עבור תיבה null
maximumVector3הקצה עם ערכי x, y, z הגדולים ביותר. מחזיר (-inf, -inf, -inf) לקופסה ריקה
centerVector3נקודת האמצע בין minimum ו maximum; (0,0,0) לקופסה ריקה
sizeVector3היקף לכל ציר (maximum - minimum); (0,0,0) לקופסה ריקה

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

Exampleסוג החזרהExample
BoundingBox.get_null()BoundingBoxמחזיר קופסה תוחמת ריקה (null)
BoundingBox.get_infinite()BoundingBoxמחזיר קופסה תוחמת אינסופית המתפרסת על כל המרחב

מתודות של מופע

Exampleסוג החזרהExample
merge(point)Noneמרחיב את הקופסה לכלול a Vector3, Vector4, או אחר BoundingBox
merge(x, y, z)Noneמרחיב את הקופסה לכלול את הנקודה (x, y, z)
contains(point)boolExample True אם Vector3 הנקודה נמצאת בפנים או על הגבול
contains(box)boolExample True אם box נמצא לחלוטין בתוך קופסה זו
overlaps_with(box)boolExample True אם שני הקופסאות חותכות
scale()floatמחזיר את ערך הקואורדינטה המוחלטת הגדול ביותר — שימושי כהערכת קנה מידה גסה של הסצנה

Example

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()
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)

ראה גם

 עברית