BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox 는 두 개의 축에 정렬된 경계 상자 (AABB)로 정의됩니다 Vector3 코너: minimum (가장 낮은 x, y, z) 및 maximum (가장 높은 x, y, z). 이는 포인트-인-박스 테스트, 프러스텀 컬링 도우미, 그리고 씬 수준 크기 추정과 같은 공간 쿼리에 사용됩니다.

A BoundingBox 는 다음과 같은 상태에 있을 수 있습니다 null (empty/uninitialised) 상태는 인수가 없을 때 생성됩니다. 호출 merge() null 박스에 대해 호출하면 제공된 첫 번째 점 또는 박스로부터 초기화됩니다.

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
BoundingBox()Null (empty) 경계 상자
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) null 박스에 대해
maximumVector3가장 큰 x, y, z 값을 가진 코너. 반환 (-inf, -inf, -inf) null box에 대해
centerVector3사이의 중점 minimummaximum; (0,0,0) null box에 대해
sizeVector3축당 범위 (maximum - minimum); (0,0,0) null 박스에 대해

정적 팩토리 메서드

Example반환 유형Example
BoundingBox.get_null()BoundingBoxnull (비어있는) 경계 상자를 반환합니다
BoundingBox.get_infinite()BoundingBox공간 전체에 걸친 무한 경계 상자를 반환합니다

인스턴스 메서드

Example반환 유형Example
merge(point)None상자를 확장하여 a 를 포함합니다 Vector3, Vector4, 또는 다른 BoundingBox
merge(x, y, z)None상자를 확장하여 해당 점을 포함합니다 (x, y, z)
contains(point)boolExample True if the Vector3 점이 내부에 있거나 경계에 있습니다
contains(box)boolExample True if 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)

참고

 한국어