sphere_sdf — 3D sdf_csg op

• Datenarten: coordgrid → sdf

• Aufruf: import fullseye as fs; fs.ledger.sphere_sdf(grid, center, R) (die Implementierung direkt: import sdf_ops; sdf_ops.sphere_sdf(grid, center, R); aus dem Register: ops3d.get("sphere_sdf"))

Verwendung

Das vorzeichenbehaftete Distanzfeld einer Kugel: |p − center| − R (innen negativ, außen positiv).

grid ist ein Koordinatenarray mit letzter Achse 3, (..., 3) (Ausgabe von grid_coords oder eine Punktwolke (N,3)). center hat Länge 3, R>=0 ist der Radius. Die Rückgabeform ist grid.shape[:-1]. Ein exaktes SDF (Gradientennorm 1). sdf_offset(sphere_sdf(g,c,R), r) == sphere_sdf(g,c,R+r).

R < 0 oder ein fehlerhaft geformtes grid / center ergibt ValueError.

Berechnung: np.linalg.norm(grid - center, axis=-1) - R. Die Koordinateneinheit wird unverändert zur Einheit des Abstands (übergibt man world-Koordinaten von grid_coords, erhält man world-Einheiten). Die Komponentenreihenfolge der Koordinaten ist die der letzten Achse von grid (bei grid_coords (x, y, z)), center in derselben Reihenfolge.

Argumente und Prüfung (ValueError):

• grid: float-Array mit letzter Achse 3, (..., 3) (auch 1-D (3,) erlaubt; 0-D oder letzte Achse ungleich 3 wird abgewiesen).

• center: 3 Elemente (wenn reshape(3) nicht möglich ist, ValueError von numpy).

• R: per float() umwandelbarer Skalar. Auch bei Übergabe etwa einer Rotationsmatrix ValueError (dieses Argument ist ein Radius, keine Pose). R < 0 wird abgewiesen, R = 0 ergibt das Abstandsfeld vom Zentrum selbst.

Rückgabewert: float64 mit grid.shape[:-1] (für die Ausgabe von grid_coords (nx, ny, nz)). Im Zentrum -R, auf der Oberfläche 0, außen positiv.

Einsatz: grid_coords für das Gitter → sphere_sdf / box_sdf → CSG mit sdf_union / sdf_subtract → marching cubes mit <= 0 als belegt (an voxel_to_mesh -sdf übergeben, Isofläche entsprechend iso=0).

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)

• annotate3d_figure — py -3.11 examples_3d/annotate3d_figure.py

• gear_metrology — py -3.11 examples_3d/gear_metrology.py

• molecule_atom_count — py -3.11 examples_3d/molecule_atom_count.py

• procedural_hand — py -3.11 examples_3d/procedural_hand.py

• render_beauty — py -3.11 examples_3d/render_beauty.py

• sdf_csg — py -3.11 examples_3d/sdf_csg.py

• 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 · box_sdf · plane_sdf · cylinder_sdf · torus_sdf · capsule_sdf · sdf_union · 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.