phyllotaxis_pattern — MATH construct op

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

• Call: import fullseye as fs; fs.ledger.phyllotaxis_pattern(n_points=400, angle_deg=None, scale=1.0, power=0.5) (implementation को सीधे call करना हो तो import mathops; mathops.phyllotaxis_pattern(n_points=400, angle_deg=None, scale=1.0, power=0.5), registry से लेना हो तो opsmath.get("phyllotaxis_pattern"))

उपयोग

Vogel's spiral — सबसे अच्छा pack करने वाला angle, और उससे बनने वाली spirals।

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

Point k sits at r = scale * k**power, theta = k * angle_deg. With the golden angle 180*(3 - sqrt 5) = 137.50776... degrees (the default) this is the arrangement of sunflower florets, pine-cone scales and the leaves of most plants.

★Why this earns its place — two independent theorems, each with a control group:

• *The golden angle packs best.* Sweep the divergence angle and the minimum nearest-neighbour distance is maximised at 137.50776 deg; a fraction of a degree either side is measurably worse. Nothing in the formula says this — it has to be measured.

• *The visible spirals are consecutive Fibonacci numbers.* Take each point's nearest neighbours and look at the difference of their indices: the differences concentrate on 1, 2, 3, 5, 8, 13, 21, 34... At a non-golden angle they do not.

Returns pairs (n, 2) of (x, y).

Raises ValueError: n_points < 1 or over the cap; non-finite angle or scale; power outside (0, 1].

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 · neighbour_index_gaps · ifs_fractal · ifs_similarity_dimension · space_filling_curve · 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.