BoundingBox — Aspose.3D FOSS for Python API Reference

Example

BoundingBox iki tarafından tanımlanan eksen hizalı bir sınırlayıcı kutudur (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 sorgular için kullanılır.

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

Example: aspose.threed.utilities

from aspose.threed.utilities import BoundingBox, Vector3

Example

ExampleExample
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

Example

ExampleExampleExample
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 bir kutu için
sizeVector3Eksen başına kapsam (maximum - minimum); (0,0,0) null kutu için

Statik Fabrika Yöntemleri

ExampleDönüş TipiExample
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ırlayıcı kutu döndürür

Örnek Metotlar

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

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)

Ayrıca Bakınız

 Türkçe