construct op• Datenarten: pairs → table
• Aufruf: import fullseye as fs; fs.ledger.curve_locality(points, gaps=(1, 2, 4, 8, 16, 32)) (die Implementierung direkt: import mathops; mathops.curve_locality(points, gaps=(1, 2, 4, 8, 16, 32)); aus dem Register: opsmath.get("curve_locality"))
Punkte mit Indexabstand `k` entlang der Kurve — wie weit liegen sie in der Ebene auseinander?
> Die ausführliche Beschreibung unten ist der Originaltext — Zusammenfassung und Überschriften sind übersetzt.
The reason a space-filling curve is used for storage layout, texture tiling
or rendering order is locality: neighbours in the ordering should stay
neighbours in space. This op measures that directly — for each gap `k` it
returns the mean Euclidean distance between points `i and i + k`.
★Why this earns its place: the claim "Hilbert has better locality than
scanning row by row" is usually asserted and never measured. Here it is a
table you can read: a Hilbert curve grows roughly as `sqrt(k)` (measured
1.00 / 1.53 / 2.12 / 3.17 / 4.29 / 6.38 at k = 1 .. 32), while a boustrophedon
scan grows nearly linearly (1.00 / 1.96 / 3.79 / 7.07 / 12.12 / 16.07) —
an honest, reproducible gap rather than a slogan.
Parameters
----------
points : (N, 2) array
The curve's points in visiting order.
gaps : ints
Index gaps to report. Gaps at or beyond `N` are dropped (not an error;
a short curve simply has nothing to say about a long gap).
Returns a `table: gap (int), mean_distance, and ratio` =
`mean_distance / mean_distance[gap == 1]` so curves of different scales can
be compared directly.
Raises `ValueError`: not an (N, 2) array; fewer than 2 points;
non-finite coordinates; every requested gap out of range.
HALCON: no operator.
Jeder mathops-Operator prüft seine Eingabe vor der Berechnung (nichts rutscht stillschweigend durch):
• **Komplexe Eingaben lösen ValueError aus** — die Umwandlung nach float64 verwirft den Imaginärteil stillschweigend (numpy meldet nur eine ComplexWarning und liefert eine plausibel aussehende, falsche reelle Zahl). Schreiben Sie .real/.imag/abs() explizit oder nutzen Sie complexops.
• **Masked Arrays mit maskierten Elementen lösen ValueError aus** — die implizite Umwandlung, die die Maske abstreift und die Rohwerte darunter verwendet, wird abgelehnt. Geben Sie explizit an, ob gefüllt oder verworfen wird.
• **NaN/Inf löst bei jeder Eingabe ValueError aus** (mit Anzahl abgelehnt — es pflanzt sich durch das gesamte Ergebnis fort).
• Formen sind strikt: 1-D und 2-D werden nie implizit hochgestuft oder gebroadcastet (eine Matrix im Vektor-Slot oder ein Vektor im Matrix-Slot löst ValueError aus; reshapen Sie explizit).
• Größenobergrenze: Operatoren, die eine Matrix nehmen, sowie die stat_histogram-Bins lösen jenseits von mathops.MAX_ELEMENTS (2^26 ≈ 67 Mio. Elemente) ValueError aus.
• Leitfaden zur Familie math_metrology
• 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.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• poc_theorems_as_pictures — py -3.11 examples/poc_theorems_as_pictures.py
table als Eingabe)construct)circle_packing_apollonian · ford_circles · phyllotaxis_pattern · neighbour_index_gaps · ifs_fractal · ifs_similarity_dimension · space_filling_curve
*Provenance: mathops.py — MATH 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.