BoundingBox

Methods

BoundingBox iki tarafından tanımlanan bir axis-aligned bounding box (AABB) Vector3 köşeler: minimum (en düşük x, y, z) ve maximum (en yüksek x, y, z). Nokta-içinde-kutu testleri, frustum temizleme yardımcıları ve sahne düzeyinde boyut tahmini gibi uzamsal sorgularda kullanılır.

A BoundingBox bir içinde olabilir null (boş/belirtilmemiş) durum, argüman olmadan oluşturulduğunda. Çağırma merge() null bir kutu üzerinde, sağlanan ilk nokta ya da kutudan başlatır.

Methods: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Methods

MethodsMethods
BoundingBox()Null (boş) sınırlayıcı kutu
BoundingBox(minimum, maximum)İkiden oluşturur Vector3 köşeler
BoundingBox(min_x, min_y, min_z, max_x, max_y, max_z)Altı skaler değerden oluşturur

Methods

MethodsMethodsMethods
minimumVector3En küçük x, y, z değerlerine sahip köşe. Döndürür (+inf, +inf, +inf) null bir kutu için
maximumVector3En büyük x, y, z değerlerine sahip köşe. Döndürür (-inf, -inf, -inf) null bir kutu için
centerVector3Arasındaki orta nokta minimum ve maximum; (0,0,0) null box için
sizeVector3Eksen başına kapsam (maximum - minimum); (0,0,0) null box için

Statik Fabrika Yöntemleri

MethodsDönüş TipiMethods
BoundingBox.get_null()BoundingBoxnull (boş) sınırlayıcı kutu döndürür
BoundingBox.get_infinite()BoundingBoxTüm uzayı kapsayan sonsuz bir sınırlama kutusu döndürür

Nesne Metotları

MethodsDönüş TipiMethods
merge(point)NoneKutuya bir … ekleyerek genişletir Vector3, Vector4, ya da başka bir BoundingBox
merge(x, y, z)NoneKutuya noktayı ekleyerek genişletir (x, y, z)
contains(point)boolMethods True eğer Vector3 nokta, sınır içinde ya da sınırda
contains(box)boolMethods True eğer box tamamen bu kutunun içinde
overlaps_with(box)boolMethods True iki kutu kesişiyorsa
scale()floatEn büyük mutlak koordinat değerini döndürür — kabaca bir sahne ölçeği tahmini olarak faydalıdır

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)

Ayrıca Bakınız

 Türkçe