Triangle de Maxwell – en python ?

Comme l’a dit le physicien américain Richard Feynman « C’est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l’air brillants avant d’avoir l’air cons » !

cm 2019-05 ICN triangle de Maxwell

On va essayer… il nous faut la bibliothèque PIL ou pillow qui crée, modifie et enregistre des images … cliquer sur « lire la suite »…

Testons d’abord ce code :

import PIL.Image as Image

im=Image.new("RGB",(256,222),(255,255,255))
pix=im.load()

for y in range(222):
    for x in range(256):
        if y>112 or y<42:
            pix[x,y]=(255,255-x,x)
        else :
            pix[x,y]=(x,255-x,255)

im.save("cm 2019-05 test initial de PIL.png")

cm 2019-05 test initial de PIL

Ça pique un peu les yeux 😉

On explique les zones à l’écran avec les tests sur y et le balayage « pour chaque ligne y entre 0 et 221, on traite toutes les colonnes x entre 0 et 255  » et les dégradés :

  • du jaune (255,255,0) au magenta (255,0,255) (avec pix[x,y]=(255,255-x,x)
  • du cyan (0,255,255) au magenta (255,0,255) (avec pix[x,y]=(x,255-x,255)

On veut maintenant un triangle. Attention, c’est inversé à l’écran, l’origine (x=0 et y=0) étant en haut à gauche de l’image générée par python/PIL et en bas à gauche dans un repère mathématique orthonormé :
cm 2019-05-10 ICN 2GT9 TBI Triangle de Maxwell_1

Le 222 a été calculé pour que le triangle soit équilatéral avec les coordonnées des sommets R, V et B ci-dessous :

cm 2019-05-10 ICN 2GT9 TBI Triangle de Maxwell_2

Un point sera dans le triangle s’il est au dessus des deux droites (BV) et (RV) !

D’où ce code « triangle » :

import PIL.Image as Image

im=Image.new("RGB",(256,222),(255,255,255))
pix=im.load()

for y in range(222):
    for x in range(256):
        if y>=-1.73*x+222 and y>=1.73*x-222:
            pix[x,y]=(255,255-x,y)

im.save("cm 2019-05-10 triangle.png")

Qui donne …

cm 2019-05-10 triangle

To be continued…

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.