
](https://laurentperrinet.github.io/author/etienne-rey/avatar.jpg)
![Comment la vision a évolué... [[LP, 2024, The Conversation]](https://theconversation.com/chats-mouches-humains-comment-la-vision-a-evolue-en-de-multiples-facettes-220083)](https://images.theconversation.com/files/568221/original/file-20240108-17-78s0cj.png)
![Panneau Des Lions [[Grotte chauvet, -30 kA]](https://fr.wikipedia.org/wiki/Grotte_Chauvet)](https://upload.wikimedia.org/wikipedia/commons/5/5b/18_PanneauDesLions%28PartieDroite%29BisonsPoursuivisParDesLions.jpg)
![Panneau Des Lions [[Grotte chauvet, -30 kA]](https://fr.wikipedia.org/wiki/Grotte_Chauvet)](https://upload.wikimedia.org/wikipedia/commons/5/5b/18_PanneauDesLions%28PartieDroite%29BisonsPoursuivisParDesLions.jpg)
](https://laurentperrinet.github.io/2022-01-12_NeuroCercle/figures/42_rotsnakes_main.jpg)
)](https://laurentperrinet.github.io/2022-01-12_NeuroCercle/figures/Face-on-mars.jpg)
)](https://laurentperrinet.github.io/2022-01-12_NeuroCercle/figures/Viking_moc_face_20m_low.png)
)](https://laurentperrinet.github.io/2022-01-12_NeuroCercle/figures/Viking_moc_face_20m_high.png)
](https://www.cabinetmagazine.org/issues/30/cabinet_030_archibald_sasha_001.jpg)
](https://www.cabinetmagazine.org/issues/30/cabinet_030_archibald_sasha_002.jpg)
](https://www.cabinetmagazine.org/issues/30/cabinet_030_archibald_sasha_003.jpg)
](https://www.cabinetmagazine.org/issues/30/cabinet_030_archibald_sasha_006.jpg)
](https://ondesparalleles.org/wp-content/uploads/2014/02/cloche_fiche_a.jpg)
](https://ondesparalleles.org/wp-content/uploads/2014/02/tropique_fiche_b.jpg)
](https://ondesparalleles.org/wp-content/uploads/2014/04/etienne_rey_horizons_variables_news2.jpg)
](https://laurentperrinet.github.io/post/2016-06-02_elasticite/TRAME_Elasticit%c3%a9.jpg)
Par Cmglee — Travail personnel, CC BY-SA 4.0, Lien
](https://laurentperrinet.github.io/post/2019-06-22_ardemone/featured.png)
](https://laurentperrinet.github.io/post/2021-10-04_interstices/featured.jpg)

](https://upload.wikimedia.org/wikipedia/commons/c/c9/Montagne_Sainte-Victoire%2C_par_Paul_C%C3%A9zanne_108.jpg)
](https://laurentperrinet.github.io/talk/2025-04-18-vibration-apparences/Merleau-Ponty_Sens-et-non-sens.png)
](https://laurentperrinet.github.io/post/2018-04-10_trames/featured.png)
def retino_grid(cr, N_rho=34, N_phi=233, N_H, N_V, offset, size_mag, ecc_max, alpha, c1, c2, power):
# https://laurentperrinet.github.io/sciblog/posts/2020-04-16-creating-an-hexagonal-grid.html
phi_v, rho_v = np.meshgrid(np.linspace(0, 2*np.pi, N_phi, endpoint=False),
np.linspace(0, ecc_max, N_rho+1, endpoint=True)[1:], sparse=False, indexing='xy')
phi_v[::2, :] += np.pi/N_phi
offsets, colors = [-offset, offset], [c1, c2]
for offset_, color in zip(offsets, colors):
# convert to cartesian coordinates
X, Y = (rho_v * np.sin(phi_v) + offset_+1)/2, (rho_v * np.cos(phi_v)+1)/2
R = size_mag * rho_v**power / N_rho
for x, y, r in zip(X.ravel(), Y.ravel(), R.ravel()):
circle(cr, x, y, r)
cr.set_source_rgba(*hue_to_rgba(color, alpha))
cr.fill()
return cr
c_blue, dc = 240, 60
opts = dict(N_rho=N_rho, N_phi=N_phi, N_H=N_H, N_V=N_V,
offset=0.07, size_mag=0.3, ecc_max=0.8, alpha=0.80, c1=c_blue-dc, c2=c_blue+dc, power=.5, operator=cairo.OPERATOR_MULTIPLY)
@disp
def draw(cr, N_H=N_H, N_V=N_V): cr = retino_grid(cr, **opts)
](https://laurentperrinet.github.io/talk/2025-04-18-vibration-apparences/2024-09-04_canaux_both.png)
](https://laurentperrinet.github.io/authors/ede-rancz/rancz_lite.png)
](https://laurentperrinet.github.io/authors/ede-rancz/rancz_free.png)
