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, Vector3

Methods

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

정적 팩토리 메서드

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

인스턴스 메서드

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

또 보기

 한국어