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 box يهيئه من أول نقطة أو صندوق مُقدم.

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) لصندوق فارغ
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يوسع الصندوق ليشمل 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)

انظر أيضًا

 العربية