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"))
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.
• 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.
• 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
sdf als Eingabe)sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_intersect · sdf_subtract · sdf_smooth_union
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.