Goûter Maths

Petits pois


Je ne sais pas si comme moi vous avez eu des petits pois à la cantine. C’est passionnant tout ce qu’on peut faire avec. Empilé sur les pics d’une fouchette, on fait un boulier. Voyons ici ce qui se passe quand on fait pénétrer une cuillère dans une couche de petits pois.

Les petits pois ne se poussent, mais pas n’importe comment. Ce qui est intéressant c’est qu’on est à une échelle mésoscopique. On est ni avec de la purée dans laquelle les particules sont trop fines pour être observées, ni avec un solide et on va retrouver de nombreuses choses intéressantes à observer.

Au fur et à mesure que la cuillère avance, les petits pois dégringolent accidentellement tantôt ceux dans une direction, tantôt ceux dans une autre direction, de manière saccadé. Dans les 8 images ci-dessous, on demande à chatGPT d’écrire les commandes à recopier pour afficher les pixels qui ont bougé d’une image à l’autre dans le film vu de dessus..

« sur Mac avec FFmpeg: prends une vidéo IMG_5937.mp4 et exporte chaque image numérotée en JPG. Ensuite, par groupes de 3, tu prends les images et tu en fais la moyenne pour créer de nouvelles images. Enfin, tu calcules les images de différences de ces nouvelles images pour voir les pixels qui ont changé avec un seuil. »

Il écrit le code qu’on a juste à recopier:

Etape 1
ffmpeg -i IMG_5937.mp4 -q:v 2 frame_%04d.jpg

Etape 2
#!/bin/bash

# Boucle pour prendre les images par groupes de 3
counter=1
for i in frame_*.jpg; do
    files=("${files[@]}" "$i")
    if (( ${#files[@]} == 3 )); then
        output="avg_$(printf "%04d" $counter).jpg"
        convert "${files[@]}" -evaluate-sequence mean "$output"
        echo "Image moyenne créée: $output"
        files=()
        ((counter++))
    fi
done

Etape 3
#!/bin/bash

prev=""
counter=1

for img in avg_*.jpg; do
    if [[ -n "$prev" ]]; then
        output="diff_$(printf "%04d" $counter).jpg"
        compare -metric AE "$prev" "$img" "$output"
        echo "Image différence créée: $output"
        ((counter++))
    fi
    prev=$img
done

Sur ces images précédentes la cuillère se déplace de bas en haut.

– On voit au cours du temps qu’un groupe de petits poids bouge à un droit donné précis (par exemple ceux de droite sur la 1ère image (ou sur la 6ème et 7ème), puis se sont ceux à un autre endroit (ceux de gauche sur le 2ème image (ou sur la 7ème image)).

– La profondeur des petits petits pois qui bougent d’une image à l’autre est toujours d’environ une dizaine de petits pois.

– Les petits pois juste devant ne bougent pas, sauf ceux qui sont juste devant, par contre ceux qui sont sur les côtés bougent bien en avance, ce qui forme comme un cône de pois immobiles en amont de la cuillère. (Voir image 3 ou 5).

On peut ensuite superposer des ces images par dizaines, pour obtenir les suivantes, qui montrent les directions vers lesquels se déplacement les petits pois. Ceux qui sont devant son éjectés sur les côtés.

Cette assiette de petits pois est un passionnant modèle pour la mécanique des fluides où chaque pois peut représenter un ensemble de molécule de fluide, et pour la déformation des métaux, où chaque pois représente un atome du cristal.

Vous aussi vous voyez tout çà dans votre assiette de petits pois ? Désormais probablement.

Et au petit déjeuner alors ? Oubliez le bol de lait avec des miel pops. Et remplacez le par une assiette creuse de lait avec une seule couche de miel-pops.

Dans cet ouvrage vous avez trouvé différentes applications: pour analyser les sons émis par les pops-corn, former au partage de gateau, ou encore tourner autour de fruits ou glisser pour faire apparaitre des nombres de fibonacci. Si vous voulez une appli pour filmer ainsi vos petits pois, écrivez donc un commentaire sous cette vidéo youtube, non je veux dire, sur la page Amazon du livre.


#!/bin/bash

# Initialisation des variables
counter=1                # Compteur pour numéroter les fichiers de sortie
files=()                 # Tableau pour stocker les noms d'images

# Boucle sur toutes les images diff_*.jpg
for img in diff_*.jpg; do
    files+=("$img")  # Ajouter l'image actuelle au tableau

    # Lorsqu'on a accumulé 10 images
    if (( ${#files[@]} == 10 )); then
        output="superpose_$(printf "%04d" $counter).jpg"
        echo "Superposition en cours : $output"

        # Superposer les images par paires successives
        temp="temp_superpose_$$.jpg"  # Fichier temporaire unique
        cp "${files[0]}" "$temp"     # Initialise avec la première image

        for ((i=1; i<10; i++)); do
            ffmpeg -i "$temp" -i "${files[$i]}" -filter_complex "blend=all_mode=darken" -frames:v 1 "temp_next_$$.jpg" -y
            mv "temp_next_$$.jpg" "$temp"  # Mettre à jour l'image temporaire
        done

        # Renomme l'image finale
        mv "$temp" "$output"

        # Réinitialise pour le groupe suivant
        files=()
        ((counter++))
    fi
done

# Superposer les images restantes (moins de 10)
if (( ${#files[@]} > 1 )); then
    output="superpose_$(printf "%04d" $counter).jpg"
    echo "Superposition des images restantes : $output"

    temp="temp_superpose_$$.jpg"
    cp "${files[0]}" "$temp"

    for ((i=1; i<${#files[@]}; i++)); do
        ffmpeg -i "$temp" -i "${files[$i]}" -filter_complex "blend=all_mode=darken" -frames:v 1 "temp_next_$$.jpg" -y
        mv "temp_next_$$.jpg" "$temp"
    done

    mv "$temp" "$output"
fi

On pourrait imaginer des mikado en morceau flotter sur du lait. l’anisotropie conduisant à des résultats très différents selon que les mikados soient peignés ou pas, c’est à dire dans une direction ou diverses. Les vagues de toutes directions se propagent-elles? la resistence à l’avancement d’une cuillère est elle différente selon la direction.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *