BoundingBox

Methods

BoundingBox یک جعبه محدود محوری (AABB) است که توسط دو Vector3 گوشه‌ها: minimum (کمترین x, y, z) و maximum (بیشترین x, y, z). برای پرس‌و‌جوهای فضایی مانند تست point‑in‑box، کمک‌کننده‌های frustum culling، و برآورد اندازه در سطح صحنه استفاده می‌شود.

یک 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) برای یک null box
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یک جعبه محدود کننده تهی (خالی) را برمی‌گرداند
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)

موارد مرتبط

 فارسی