sdf_intersect — 3D sdf_csg op

• Datenarten: sdf × sdf → sdf

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

• GPU: nein (nur CPU-Referenzimplementierung)

Verwendung

Der Schnitt zweier SDFs, A∩B = das elementweise max(a, b) (innen nur, wo beide innen sind).

Die Null-Isofläche ist der gemeinsame Teil beider Grenzen. Sowohl innerhalb als auch außerhalb gelten im Allgemeinen keine strengen SDFs, es können jedoch geringere Entfernungsgrenzen festgelegt werden.

Berechnung: „np.maximum(np.asarray(a, float64), np.asarray(b, float64))“. pro Element max, also liegt ein Punkt nur dann innerhalb (negativ) A∩B, wenn „a < 0“ und „b < 0“ ist. Die Form muss nur konsistent übertragen werden (wenn nicht, numpys „ValueError“). Es werden keine weiteren Tests durchgeführt. NaN wird propagiert, „±inf“ wird strikt propagiert („max(a, -inf) = a“).

Eingabe: Zwei SDFs, die im selben Raster ausgewertet wurden („sphere_sdf“ / „box_sdf“ / (wie die Ausgabe von „esdf“, inneres Negativ und äußeres Positiv). Die Entfernungseinheit ist dieselbe wie die Eingabe.

Rückgabe: ein float64 der Form nach der Übertragung. „<= 0“ ist die Besetzung von A∩B.

Achtung:

• Äußere Werte können kleiner sein als der wahre Abstand: Außerhalb des Schnittpunkts, wenn der Punkt außerhalb von A und außerhalb von B liegt Wenn „max(a, b)“ der Abstand „zur am weitesten entfernten Oberfläche“ ist, ist die Oberfläche von A∩B weiter entfernt. Es gibt Dinge (Untergrenze). Die Null-Isofläche ist exakt.

• Wenn kein gemeinsamer Teil vorhanden ist, sind alle Elemente positiv (Belegung 0) und es tritt kein Fehler auf.

• Wird zum „Schneiden“ von CSG verwendet, z. B. zum Schneiden einer Kugel mit einem Kasten oder zum Herstellen eines Prismas mit zwei Kasten. Das Subtrahieren von B von A ist „sdf_subtract“.

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)

• 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

Typkompatible Folge-Operatoren (nehmen sdf als Eingabe)

sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_union · sdf_subtract · 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.