typed op• Datenarten: points → volume
• Aufruf: fullseye.apply(img, "tb_torus_sdf", a=0.5, b=0.5) (das 2-D-Modell ist ein Bild plus zwei skalare Regler a,b∈[0,1])

*Die Abbildung ist die tatsächliche Ausgabe auf einer synthetischen 128×128-Eingabe. Links Eingabe, rechts Ausgabe. Punktwolken als Draufsicht-Streudiagramm (Helligkeit = z), 1-D-Reihen als Linie, Volumen als Maximum-Projektion entlang z, Videos als mittleres Bild, komplexe Bilder als Betrag; Rückgabewerte, die kein Bild ergeben, werden als Werte gezeigt.*
*Regler a ändert die Ausgabe nicht (gemessen: identisch bei 0,1 / 0,5 / 0,9).*
*Regler b ändert die Ausgabe nicht (gemessen: identisch bei 0,1 / 0,5 / 0,9).*
Stufen (die vorangehenden Ops → dieser Op, von links nach rechts):
▸ tb_torus_sdf: Stufen (Doku-Website)
Auf anderen Bildern (synthetische Szene / Foto / Münzen. Obere Reihe: Eingaben, untere Reihe: deren Ausgaben. Regler auf Standard):
▸ tb_torus_sdf: andere Eingaben (Doku-Website)
Bewegung (GIF: Bilder / Ansichten / Schnitte nacheinander. Die stehende Abbildung ist die vollständige; das GIF ist ergänzend):

Exaktes vorzeichenbehaftetes Distanzfeld eines Torus (Donut) (innen negativ, außen positiv).
sdf(p) = ‖(r - major_radius, t)‖ - minor_radius (r ist der Radius von der Achse, t der axiale Abstand). Die Seele ist ein Kreis mit Radius major_radius, um den ein Rohr mit Radius minor_radius liegt; daher lässt es sich direkt als analytische Form einer Verrundung (Fillet) verwenden.
Argumente und Prüfung (ValueError):
• grid / center / axis: wie bei cylinder_sdf (die Achse ist die Richtung des Donut-Lochs).
• major_radius: Radius der Seele (negativ wird abgewiesen).
• minor_radius: Radius des Rohrs (negativ wird abgewiesen). Bei minor_radius >= major_radius fällt das Loch kollabiert (Spindeltorus). Es wird nicht abgewiesen, aber exakt ist es nur für minor_radius < major_radius (Korrektur 2026-10-07: früher stand hier "als Distanzfeld korrekt"). Innen, wo sich das Rohr auf der Achse überlappt, ist der Betrag kleiner als der wahre Abstand zum Rand (im Zentrum bei major 1, minor 2: −1, wahrer Wert −1.73). Vorzeichen, Nullniveaumenge und Außenwerte sind korrekt, und der Betrag innen ist eine untere Schranke des wahren Abstands, daher ist es für Sphere Tracing sicher verwendbar.
Rückgabewert: float64 der Form grid.shape[:-1].
Einsatz: mit sdf_subtract eine Verrundung in eine Innenecke fräsen / mit sdf_union die Form einer O-Ring-Nut bilden. Um Ecken nur abzurunden, ist sdf_smooth_union handlicher, dort hängt der Rundungs- radius jedoch von der Form ab —— will man den Radius als Konstruktionswert festhalten, dann dieses.
Die 3d-Op torus_sdf, in die 2-D-Evolutionsregistry überbrückt. Die Implementierung ist dieselbe; nur die Aufrufkonvention ist an op(v, a, b) angepasst. Diese Op hat keine Stellgrößen; weder a noch b wird verwendet.
• 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.
Das Programm unten ist nachweislich lauffähig (gleiche Eingabe wie die Abbildung). In der Studio-Hilfe wird dieser Block zu Schaltflächen, die es sofort laden und ausführen.
img_to_points 0.50 0.50 tb_torus_sdf 0.50 0.50
▸ Diese Pipeline laden · Laden & ausführen
Die folgenden Beispiele rufen den zugrunde liegenden Ledger-Op torus_sdf auf. Dieser Brücken-Op ist dieselbe Implementierung, angepasst an die Konvention fn(v, a, b); das Verhalten gilt unverändert (nur die Aufrufform unterscheidet sich).
• sdf_csg — py -3.11 examples_3d/sdf_csg.py
volume als Eingabe)identity · vol_gaussian · vol_median · vol_erode · vol_dilate · vol_threshold · vol_reg_dilate · vol_reg_erode
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample
*Provenance: ops.py — 2D 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.