BoundingBox

Methods

BoundingBox هو صندوق حدّي محاذى للمحاور (AABB) يُعرّف بواسطة اثنين Vector3 زوايا: minimum (أدنى x, y, z) و maximum (أعلى x, y, z). يُستخدم في الاستعلامات المكانية مثل اختبارات النقطة داخل الصندوق، مساعدات استبعاد المخروط (frustum culling)، وتقدير حجم المشهد على مستوى المشهد.

A BoundingBox يمكن أن يكون في null (حالة فارغة/غير مبدئية) عند إنشائه بدون أي وسائط. استدعاء merge() على صندوق null يهيئه من أول نقطة أو صندوق مُقدَّم.

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) لصندوق null

طرق المصنع الثابتة

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)

انظر أيضًا

 العربية