plane_sdf — 3D sdf_csg op

• Datenarten: coordgrid → sdf

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

Verwendung

Exaktes vorzeichenbehaftetes Distanzfeld eines Halbraums (der durch eine Ebene abgeschnittenen Seite) (innen negativ, außen positiv).

sdf(p) = (p - point) · n̂. Die Seite, auf die die Normale n̂ zeigt, ist außen (positiv), die Gegenseite innen. Für Operationen, die nur eine Seite behalten, etwa Fase, Schneiden oder "nur was über der Platine liegt". Durch Stapeln von sdf_intersect entsteht jedes konvexe Polyeder. Allerdings ist der Schnitt per max außerhalb der Ecken nicht exakt: Ein Quader aus 6 Ebenen stimmt in der Belegung (<= 0) und den Innenwerten exakt mit box_sdf überein, außen aber nahe den Ecken wird um bis zu 2.1 (gemessen an einer Box mit Halbkante 2, Gitter 0.25) unterschätzt -- eine Standardeigenschaft von CSG; wird die Distanz selbst benötigt, box_sdf verwenden.

Exaktheit: Eine Ebene hat im ganzen Raum Gradientennorm 1, daher ist dieser Wert überall die wahre vorzeichenbehaftete Distanz (keine Fallunterscheidung, die wie bei box_sdf an den Ecken umschaltet).

Argumente und Prüfung (ValueError):

• grid: float-Array (..., 3) mit letzter Achse 3 (Ausgabe von grid_coords oder eine Punktliste).

• point: 1 Punkt auf der Ebene (3 Elemente).

• normal: Normale der Ebene (3 Elemente, Nullvektor und NaN werden abgewiesen). Die Länge wird automatisch auf 1 normiert, der Betrag beeinflusst das Ergebnis also nicht (nur die Richtung zählt).

Rückgabewert: float64 der Form grid.shape[:-1]. Positiv auf der Normalenseite, negativ auf der Gegenseite, 0 auf der Ebene.

Einsatz: sdf_subtract(part, plane_sdf(g, p, n)) "schneidet die Normalenseite dieser Ebene weg". Zum Umkehren der Orientierung das Vorzeichen von normal umdrehen (-sdf bewirkt dasselbe).

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_subtract

Gleiche Kategorie (sdf_csg)

grid_coords · sphere_sdf · box_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.