BoundingBox

Methods

BoundingBox là một axis-aligned bounding box (AABB) được định nghĩa bởi hai Vector3 đỉnh: minimum (x, y, z thấp nhất) và maximum (x, y, z cao nhất). Nó được sử dụng cho các truy vấn không gian như point-in-box tests, frustum culling helpers, và scene-level size estimation.

Một BoundingBox có thể nằm trong một null (trạng thái rỗng/chưa khởi tạo) khi được tạo mà không có đối số. Gọi merge() trên một null box sẽ khởi tạo nó từ điểm hoặc hộp đầu tiên được cung cấp.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Hộp bao Null (trống)
BoundingBox(minimum, maximum)Xây dựng từ hai Vector3 các góc
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Xây dựng từ sáu giá trị scalar

Methods

MethodsMethodsMethods
minimumVector3Góc có các giá trị x, y, z nhỏ nhất. Trả về (+inf, +inf, +inf) cho một hộp null
maximumVector3Góc có các giá trị x, y, z lớn nhất. Trả về (-inf, -inf, -inf) cho một hộp null
centerVector3Điểm trung điểm giữa minimummaximum; (0,0,0) cho một null box
sizeVector3Phạm vi theo trục (maximum - minimum); (0,0,0) cho một null box

Các phương thức Factory tĩnh

MethodsKiểu trả vềMethods
BoundingBox.get_null()BoundingBoxTrả về một bounding box null (trống)
BoundingBox.get_infinite()BoundingBoxTrả về một hộp bao vô hạn bao trùm toàn bộ không gian

Các phương thức Instance

MethodsKiểu trả vềMethods
merge(point)NoneMở rộng hộp để bao gồm một Vector3, Vector4, hoặc một BoundingBox
merge(x, y, z)NoneMở rộng hộp để bao gồm điểm (x, y, z)
contains(point)boolMethods True nếu Vector3 điểm nằm trong hoặc trên biên
contains(box)boolMethods True nếu box nằm hoàn toàn bên trong hộp này
overlaps_with(box)boolMethods True nếu hai hộp giao nhau
scale()floatTrả về giá trị tọa độ tuyệt đối lớn nhất — hữu ích như một ước lượng quy mô cảnh sơ bộ

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)

Xem thêm

 Tiếng Việt