BoundingBox
Methods
BoundingBox 는 두 개에 의해 정의된 축 정렬 경계 상자(AABB)입니다 Vector3 코너: minimum (가장 낮은 x, y, z) 및 maximum (가장 높은 x, y, z). 이는 포인트-인-박스 테스트, 프러스텀 컬링 도우미, 그리고 씬 수준 크기 추정과 같은 공간 쿼리에 사용됩니다.
A BoundingBox 에 있을 수 있다 null (empty/uninitialised) 상태는 인수가 없을 때 생성됩니다. 호출 merge() null 박스에 대해 첫 번째 제공된 점 또는 박스로 초기화합니다.
Methods: aspose.threed.utilities
from aspose.threed.utilities import BoundingBox, Vector3Methods
| Methods | Methods |
|---|---|
BoundingBox() | Null (empty) 경계 박스 |
BoundingBox(minimum, maximum) | 두 개로부터 구성합니다 Vector3 코너 |
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z) | 여섯 개의 스칼라 값으로부터 구성합니다 |
Methods
| Methods | Methods | Methods |
|---|---|---|
minimum | Vector3 | 가장 작은 x, y, z 값을 가진 코너. 반환합니다 (+inf, +inf, +inf) null 박스에 대해 |
maximum | Vector3 | 가장 큰 x, y, z 값을 가진 코너. 반환 (-inf, -inf, -inf) null 박스에 대해 |
center | Vector3 | 사이의 중점 minimum 및 maximum; (0,0,0) null 박스에 대해 |
size | Vector3 | 축당 범위 (maximum - minimum); (0,0,0) null 박스에 대해 |
정적 팩토리 메서드
| Methods | 반환 유형 | Methods |
|---|---|---|
BoundingBox.get_null() | BoundingBox | null(빈) 경계 상자를 반환합니다 |
BoundingBox.get_infinite() | BoundingBox | 공간 전체에 걸친 무한 경계 상자를 반환합니다 |
인스턴스 메서드
| Methods | 반환 유형 | Methods |
|---|---|---|
merge(point) | None | 상자를 확장하여 a를 포함합니다 Vector3, Vector4, 또는 다른 BoundingBox |
merge(x, y, z) | None | 상자를 확장하여 점을 포함시킵니다 (x, y, z) |
contains(point) | bool | Methods True if the Vector3 점이 내부에 있거나 경계에 있습니다 |
contains(box) | bool | Methods True if box 이 상자 안에 완전히 포함됩니다 |
overlaps_with(box) | bool | Methods 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)