sdf_subtract — 3D sdf_csg op

• Datenarten: sdf × sdf → sdf

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

Verwendung

Die Differenz A\B = max(a, −b) (innen in A und außen in B = innen in −b).

Das Umkehren des Vorzeichens von b vertauscht "außerhalb von B zu innen, innerhalb von B zu außen" (Komplement), daher ergibt das Produkt mit A die Form A, aus der B ausgehöhlt ist. Nicht kommutativ: sdf_subtract(a,b) != sdf_subtract(b,a).

Berechnung: np.maximum(np.asarray(a, float64), -np.asarray(b, float64)). Gleich sdf_intersect(a, -b). Die Formen müssen broadcast-kompatibel sein (sonst wirft numpy ValueError), weitere Prüfungen gibt es nicht. NaN breitet sich aus, ±inf ebenfalls exakt (an einem Punkt mit b = +inf ist -b = -inf, also bleibt a unverändert = ein Punkt, an dem "B unendlich weit weg ist", bleibt A).

Eingabe: 2 SDFs auf demselben Gitter (innen negativ, außen positiv). a ist die zu behaltende Form, b die auszuhöhlende. Die Distanzeinheit ist die der Eingabe.

Rückgabewert: float64 der Broadcast-Form. <= 0 ist die Belegung von A\B.

Hinweise:

• Innerhalb von B wird der Wert -b > 0 (die Distanz zur Oberfläche von B), daher ist die Distanz zur Innenwand des ausgehöhlten Lochs außen exakt und innerhalb von A eine untere Schranke (Standardeigenschaft von CSG).

• Enthält B das A vollständig, sind alle Elemente positiv (leere Menge). Das ist kein Fehler.

• Für Bohren, Taschenfräsen und Schalen (die Differenz von a und sdf_offset(a, -t) ergibt eine Schale der Dicke t).

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)

• 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_union · sdf_intersect · sdf_smooth_union

Gleiche Kategorie (sdf_csg)

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


*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.