sdf_union — 3D sdf_csg op

• Datenarten: sdf × sdf → sdf

• Aufruf: import fullseye as fs; fs.ledger.sdf_union(a, b) (die Implementierung direkt: import sdf_ops; sdf_ops.sdf_union(a, b); aus dem Register: ops3d.get("sdf_union"))

Verwendung

Die Vereinigung zweier SDFs, A∪B = das elementweise min(a, b) (innen, wenn eines negativ ist).

Die Null-Isofläche stimmt exakt mit der Vereinigung der Ränder beider Formen überein. Außen ist es eine exakte SDF (Distanz zur nächsten Oberfläche), innen eine konservative untere Schranke. a/b müssen nur broadcast-kompatibel sein.

Berechnung: np.minimum(np.asarray(a, float64), np.asarray(b, float64)). Sonst keine Prüfung -- lassen sich die Formen nicht broadcasten, wirft numpy ValueError; NaN breitet sich elementweise aus (np.minimum liefert NaN). ±inf breitet sich exakt aus (min(a, +inf) = a: interoperabel mit dem Vertrag "+inf, wenn alles frei ist" von esdf).

Eingabe: 2 auf demselben Gitter ausgewertete SDFs (Ausgaben von sphere_sdf / box_sdf / esdf usw., innen negativ, außen positiv). Die Form darf die von grid_coords (nx, ny, nz) oder eine Punktliste (N,) sein. Die Distanzeinheit ist die der Eingabe.

Rückgabewert: float64 der Broadcast-Form. Der Nulldurchgang (<= 0) ist die Belegung von A∪B.

Hinweis: Der Innenwert ist eine untere Schranke "der Distanz zur jeweils näheren Oberfläche"; im Überlappungsbereich fällt er kleiner als die wahre Distanz aus (im Betrag größer). Das ist eine Standardeigenschaft von CSG und beeinflusst weder die Isoflächen-Extraktion (marching cubes) noch die Dilatation durch sdf_offset. Zum Abrunden der Naht sdf_smooth_union.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• gear_metrology — py -3.11 examples_3d/gear_metrology.py

• render_beauty — py -3.11 examples_3d/render_beauty.py

• sdf_csg — py -3.11 examples_3d/sdf_csg.py

Typkompatible Folge-Operatoren (nehmen sdf als Eingabe)

sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_intersect · sdf_subtract · sdf_smooth_union

Gleiche Kategorie (sdf_csg)

grid_coords · sphere_sdf · box_sdf · plane_sdf · cylinder_sdf · torus_sdf · capsule_sdf · sdf_intersect


*Provenance: sdf_ops.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.