BoundingBox — Aspose.3D FOSS for Python API Reference

Properties

BoundingBox là một axis-aligned bounding box (AABB) được định nghĩa bởi hai Vector3 góc: 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ư kiểm tra điểm trong hộp, trợ giúp cắt khung nhìn, và ước lượng kích thước ở mức cảnh.

Một BoundingBox có thể ở 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 hộp null sẽ khởi tạo nó từ điểm hoặc hộp đầu tiên được cung cấp.

Properties: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Properties

PropertiesProperties
BoundingBox()Hộp bao trùm Null (rỗng)
BoundingBox(minimum, maximum)Xây dựng từ hai Vector3 góc
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Xây dựng từ sáu giá trị vô hướng

Properties

PropertiesPropertiesProperties
minimumVector3Góc có các giá trị x, y, z nhỏ nhất. Trả về (+inf, +inf, +inf) đối với một hộp null
maximumVector3Góc có các giá trị x, y, z lớn nhất. Trả về (-inf, -inf, -inf) đối với một hộp null
centerVector3Điểm giữa giữa minimummaximum; (0,0,0) đối với một hộp null
sizeVector3Kích thước theo trục (maximum - minimum); (0,0,0) cho một hộp null

Các phương thức nhà máy tĩnh

PropertiesKiểu trả vềProperties
BoundingBox.get_null()BoundingBoxTrả về một hộp bao null (rỗng)
BoundingBox.get_infinite()BoundingBoxTrả về một hộp bao vô hạn bao phủ toàn bộ không gian

Các phương thức của đối tượng

PropertiesKiểu trả vềProperties
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)boolProperties True nếu Vector3 điểm nằm trong hoặc trên biên
contains(box)boolProperties True nếu box nằm hoàn toàn bên trong hộp này
overlaps_with(box)boolProperties 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ộ

Properties

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)

Xem thêm

 Tiếng Việt