sdf_offset — 3D sdf_csg op

• Datenarten: sdf → sdf

• Aufruf: import fullseye as fs; fs.ledger.sdf_offset(sdf, r) (die Implementierung direkt: import sdf_ops; sdf_ops.sdf_offset(sdf, r); aus dem Register: ops3d.get("sdf_offset"))

Verwendung

Verschiebt die Null-Niveaumenge eines SDF um die Distanz r entlang der Normalen = sdf − r (r>0 bläht auf, r<0 schrumpft).

Die neue Nullmenge ist die Isofläche sdf == r des alten Feldes. Die Distanz verschiebt sich an jedem Punkt gleichmäßig um r, daher bleiben die Eigenschaften als Distanzfeld (Gradientennorm 1) erhalten. Zum Aufdicken von Primitiven (gerundete Schalen) oder zum Sichern von Freiraum für Rohrleitungen.

Berechnung: np.asarray(sdf, float64) - float(r). r nur als Skalar (ein Array ergibt TypeError aus float()). Die Einheit ist die Distanzeinheit von sdf. r = 0 ist die Identität. Keine Prüfung von Form, NaN oder inf (inf - r = inf breitet sich vertragsgemäß aus).

Geometrische Bedeutung: Für eine exakte SDF entspricht es der Minkowski-Summe (r > 0 dilatiert mit einer Kugel vom Radius r, r < 0 erodiert). r auf sphere_sdf(g, c, R) angewandt ist exakt gleich sphere_sdf(g, c, R + r). Bei der Dilatation von box_sdf werden die Ecken rund (da es eine euklidische Dilatation ist, wird die Box nicht einfach größer, sondern zu einer gerundeten Box mit Ecke R = r).

Hinweise:

• Übersteigt beim Erodieren (r < 0) |r| den kleinsten Inkreisradius, verschwindet die Form (alle Elemente positiv). Das ist kein Fehler.

• Das Innere von sdf_union / sdf_intersect ist eine untere Schranke der wahren Distanz; erodiert man nach dem Kombinieren mit r < 0, kann im Überlappungsbereich mehr abgetragen werden als tatsächlich nötig.

• Schale der Dicke t: sdf_subtract(sdf, sdf_offset(sdf, -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)

• sfm_recon — py -3.11 examples_3d/sfm_recon.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_subtract

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.