fly_view_plane_texture — FLYVISION stimulus op

• Data kinds: table → signal

• Call: import fullseye as fs; fs.ledger.fly_view_plane_texture(lattice, distance_m, period_m, pattern='vertical', drho_deg=8.23, contrast=1.0, mean=0.5, lateral_m=(0.0, 0.0), phase_deg=0.0) (implementation को सीधे call करना हो तो import flyvision; flyvision.fly_view_plane_texture(lattice, distance_m, period_m, pattern='vertical', drho_deg=8.23, contrast=1.0, mean=0.5, lateral_m=(0.0, 0.0), phase_deg=0.0), registry से लेना हो तो opsflyvision.get("fly_view_plane_texture"))

उपयोग

सामने की periodic surface को हर ommatidium कैसे देखता है — analytic integration (image resampling नहीं)।

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

A plane at *distance_m* ahead of the eye (x = distance_m in body coordinates, texture in (y, z)) carries a reflectance mean * (1 + contrast * s(y, z)) with s in [-1, 1]: stripes of period *period_m* ("vertical" modulates along y, "horizontal" along z), a "checker" of that period, a pure "sine", a deterministic 1/f "pink" texture whose longest wavelength is *period_m* (24 plane waves with amplitudes summing to 1, so its rms contrast is 0.18 of *contrast*), or "grey". Each ommatidium integrates the surface under a Gaussian acceptance of FWHM *drho_deg* — without rendering or resampling an image. The texture is a cosine series; a surface wave vector k becomes the angular wave vector J^T k at the ommatidium (J the exact derivative of the line-of-sight intercept), and a Gaussian acceptance multiplies each term by exp(-pi^2 drho^2 |J^T k|^2 / (4 ln2)). That is the small-footprint

approximation fly_hex_resample documents, applied term by term, with no pixel grid in between.

lattice: a fly_hex_lattice or fly_vogel_lattice result.

distance_m / period_m: the plane's distance and the texture period, metres.

pattern: one of PLANE_PATTERNS.

drho_deg: the acceptance FWHM, degrees.

contrast: the Michelson contrast of the texture, 0 <= contrast <= 1.

mean: the mean reflectance (> 0).

lateral_m: the eye's (y, z) offset from the texture origin, metres — the

fly's sideways position, which shifts the stripe phase.

phase_deg: an extra texture shift, in degrees of one period.

Returns a 1-D float64 signal of n ommatidial intensities (>= 0). An ommatidium whose line of sight does not reach the plane (d_x <= 0) reads *mean* — the surface is not in its field, and a texture at an infinite distance has zero modulation anyway.

Square waves keep their odd harmonics up to where the acceptance has attenuated them below 1e-6 (at most MAX_HARMONIC); a checkerboard is the product of two such series. The partial sum is then already smoothed, so there is no Gibbs overshoot to clip; a maximum(., 0) guards rounding.

Ground truth (pinned in the tests): for pattern="sine" the amplitude at the central ommatidium is contrast * mean * exp(-pi^2 drho^2 (D/P)^2 / (4 ln2)) with drho in radians, and at an ommatidium at azimuth theta the angular frequency is D/(P cos^2 theta) — both to 1e-9.

Raises ValueError: a malformed *lattice* (an empty dict is refused — it has none of the lattice keys), a non-positive *distance_m* / *period_m* / *drho_deg* / *mean*, a *contrast* outside [0, 1], a *lateral_m* that is not two finite numbers, a non-finite *phase_deg*, and an unknown *pattern*.

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

• fly_vision 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_zebra_stripes_fly_eye — py -3.11 examples/poc_zebra_stripes_fly_eye.py

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

fly_hex_quantize · fly_emd_response · fly_lgmd_eta · fly_tau_from_expansion · lattice_moire_peak · traj_tau_dot · fly_dsi

इसी category के (stimulus)

fly_sky_1f


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

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