BoundingBox

Methods

BoundingBox adalah kotak sempadan selari paksi (AABB) yang ditakrifkan oleh dua Vector3 bucu: minimum (x, y, z terendah) dan maximum (x, y, z tertinggi). Ia digunakan untuk pertanyaan spatial seperti ujian titik-dalam-kotak, pembantu pemotongan frustum, dan anggaran saiz peringkat adegan.

Sebuah BoundingBox boleh berada dalam null (kosong/tidak diinisialisasi) keadaan apabila dicipta tanpa argumen. Memanggil merge() pada kotak null menginisialisasinya dari titik atau kotak pertama yang diberikan.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Kotak sempadan Null (kosong)
BoundingBox(minimum, maximum)Membina daripada dua Vector3 bucu
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Membina daripada enam nilai skalar

Methods

MethodsMethodsMethods
minimumVector3Bucu dengan nilai x, y, z terkecil. Mengembalikan (+inf, +inf, +inf) untuk kotak null
maximumVector3Bucu dengan nilai x, y, z terbesar. Mengembalikan (-inf, -inf, -inf) untuk null box
centerVector3Titik tengah antara minimum dan maximum; (0,0,0) untuk null box
sizeVector3Jangkauan per paksi (maximum - minimum); (0,0,0) untuk kotak null

Kaedah Kilang Statik

MethodsJenis PulanganMethods
BoundingBox.get_null()BoundingBoxMengembalikan kotak sempadan null (kosong)
BoundingBox.get_infinite()BoundingBoxMengembalikan kotak sempadan tak terhingga yang meliputi seluruh ruang

Kaedah Instans

MethodsJenis PulanganMethods
merge(point)NoneMemperluas kotak untuk menyertakan a Vector3, Vector4, atau yang lain BoundingBox
merge(x, y, z)NoneMemperluas kotak untuk menyertakan titik (x, y, z)
contains(point)boolMethods True jika Vector3 titik berada di dalam atau pada sempadan
contains(box)boolMethods True jika box sepenuhnya berada dalam kotak ini
overlaps_with(box)boolMethods True jika dua kotak berpotongan
scale()floatMengembalikan nilai koordinat mutlak terbesar — berguna sebagai anggaran skala adegan secara kasar

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)

Lihat Juga

 Bahasa Melayu