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"))
Der Schnitt zweier SDFs, A∩B = das elementweise max(a, b) (innen nur, wo beide innen sind).
Die Null-Isofläche ist der Schnitt beider Ränder. Außen exakte SDF, innen konservative untere Schranke.
Berechnung: np.maximum(np.asarray(a, float64), np.asarray(b, float64)). Da es ein elementweises max ist, liegt ein Punkt nur dann innerhalb von A∩B (negativ), wenn a < 0 und b < 0. Die Formen müssen nur broadcast-kompatibel sein (sonst wirft numpy ValueError), weitere Prüfungen gibt es nicht. NaN breitet sich aus, ±inf breitet sich exakt aus (max(a, -inf) = a).
Eingabe: 2 auf demselben Gitter ausgewertete SDFs (Ausgaben von sphere_sdf / box_sdf / esdf usw., innen negativ, außen positiv). Die Distanzeinheit ist die der Eingabe.
Rückgabewert: float64 der Broadcast-Form. <= 0 ist die Belegung von A∩B.
Hinweise:
• Der Außenwert kann kleiner als die wahre Distanz ausfallen: Außerhalb des Schnitts, wenn der Punkt außerhalb von A und außerhalb von B liegt, ist max(a, b) die Distanz "zur ferneren Oberfläche", und die Oberfläche von A∩B kann noch weiter entfernt sein (untere Schranke). Die Null-Isofläche ist exakt.
• Gibt es keinen gemeinsamen Teil, sind alle Elemente positiv (Belegung 0); das ist kein Fehler.
• Für CSG-"Ausschnitte", etwa eine Kugel mit einer Box beschneiden oder aus 2 Boxen ein Prisma bauen. B aus A herausnehmen ist sdf_subtract.
• 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.
• 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
sdf als Eingabe)sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_union · sdf_subtract · sdf_smooth_union
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.