space_filling_curve — MATH construct op

• Data kinds: कोई नहीं → pairs (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)

• Call: import fullseye as fs; fs.ledger.space_filling_curve(kind='hilbert', order=4) (implementation को सीधे call करना हो तो import mathops; mathops.space_filling_curve(kind='hilbert', order=4), registry से लेना हो तो opsmath.get("space_filling_curve"))

उपयोग

2**order square पर Hilbert / Moore / scan orders — एक permutation, जाँचा हुआ।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

Returns the visiting order as pairs (4**order, 2) of integer grid coordinates. Two scan orders are included as control groups, not as

filler: row_major jumps a whole row at the end of each line and boustrophedon (serpentine) does not, so "consecutive points are adjacent" separates them, and the locality measurement separates all four.

★Why this earns its place — the defining properties are integers:

• The result visits 4**order cells, each exactly once: a permutation, verified by sorting, not by sampling.

• For Hilbert, Moore and boustrophedon, consecutive points are always at L1 distance exactly 1. Row-major is not (it jumps at every line end), which is the control.

• Moore's curve is closed: the last point is adjacent to the first. Hilbert's is not.

• *Locality.* For a gap of k in index, the mean Euclidean distance grows like sqrt(k) for Hilbert and much faster for row-major. That is why Hilbert order is used for spatial indexes, and it is measurable here rather than asserted.

Raises ValueError: unknown kind; order < 1; the grid would exceed the cap; moore with order < 2 (it is not defined below that).

HALCON: no operator.

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

उपयोग की विस्तृत guide

• math_metrology family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_theorems_as_pictures — py -3.11 examples/poc_theorems_as_pictures.py

वे अगले ops जिनसे type जुड़ता है (pairs को input के रूप में लेते हैं)

neighbour_index_gaps · curve_locality

इसी category के (construct)

circle_packing_apollonian · ford_circles · phyllotaxis_pattern · neighbour_index_gaps · ifs_fractal · ifs_similarity_dimension · curve_locality


*Provenance: mathops.py — MATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.