Article épinglé

mardi 11 février 2020

Python, image et pixels avec Pillow


Création d'une image avec des couleurs aléatoires puis modification de cette dernière.

Bibliothèque à installer sous l'IDE Thonny

Voir Pillow qui remplace PIL sous python 3


Création d'une image de 5x5 pix² puis inversion des couleurs puis mise en niveau de gris

Script

from PIL import Image
from random import *

#taille image
largeur =5
hauteur=5

# creation image 5 pix² couleur aleatoire
img=Image.new("RGB",(largeur,hauteur),(255,255,255))

print("test 1 creation de l'image source - enregistrement 5par5pix-1.jpg")

for x in range (largeur):
    for y in range (hauteur):
        b=randint(0,255)
        v=randint(0,255)
        r=randint(0,255)

        img.putpixel((x,y),(r,v,b))
        print(x,y,r,v,b)
img.save("5par5pix-1.jpg")

# inversion couleur
print("test 2 Inversion couleur - enregistrement 5par5pix-2.jpg")

img=Image.open("5par5pix-1.jpg")
for x in range (largeur):
    for y in range (hauteur):
        r,v,b=img.getpixel((x,y))
        nr,nv,nb=255-r,255-v,255-b
        img.putpixel((x,y),(nr,nv,nb))
        print(x,y,nr,nv,nb)
img.save("5par5pix-2.jpg")        

# mise en niveau de gris
print("test 3 niveau de gris - enregistrement 5par5pix-3.jpg")

img=Image.open("5par5pix-1.jpg")
for x in range (largeur):
    for y in range (hauteur):
        r,v,b=img.getpixel((x,y))
        gris=int((r+v+b)/3)
        img.putpixel((x,y),(gris,gris,gris))
        print(x,y,gris,gris,gris)
img.save("5par5pix-3.jpg") 

lundi 10 février 2020

Python, tortue et JPO


Simulation en python représentant la marche aléatoire d'une tortue avec dans une boucle les instructions suivantes:
- 1 pas
- rotation de 90° sur la gauche ou sur la droite

La question posée est :
Sortirai-je de ma fenêtre?

La simulation au bout de 36 000 itérations semble confirmer que même sans direction j'avance et m'éloigne de mon point de départ ce qui peut réconforter en cette période de portes ouvertes ;)))


Fort de cette première simulation, en voici une seconde lancée ce dimanche. Là encore ma tortue me quitte. Dernières coordonnées avant disparition dans les limbes:
x=440 et y=-1104

PS: Le cadre rouge représente un rectangle de 1000x800 pix²


Script 

# import bibliotheque necessaire
from turtle import *
from random import *

### definition du terrain de jeu
larg,haut =1000, 800 # le (0,0) est en haut à gauche, et le pt (larg,haut) est en bas droite
setup(larg+100,haut+100)
n=100000
u=4

# limite rouge
penup()
goto (larg/2,0)
pendown()
color('red')
left(90),forward(haut/2),left(90),forward(larg),left(90),forward(haut),left(90),forward(larg),left(90),forward(haut/2)
penup()
color('black')
home()
pendown()


# marche aléatoire
compteur_pas=0
for k in range(n):
    forward(u) # avance de u
    compteur_pas= compteur_pas+1
    print(compteur_pas,"Coord Turtle=",position()) # affiche nbre pas et coord x,y de turtle 
    
    # choix aleatoire a gauche ou a droite?
    a=randint(0,1)
    if (a==0) :
        left(90)
    else :
        right(90)

mardi 28 janvier 2020

Si vous voulez prendre de l'avance en python pour la prépa

Source Prépa de Vauvenargues

https://www.ptsi-pt-aix.com/pt/informatique/

Et j'aime beaucoup leurs consignes de rentrée...


Pour les « plus connectés » qui veulent travailler de manière interactive, nous vous conseillons la rubrique exercice du site : http://www.mathwebs.com/ . Et de consulter

en priorité :
Exercices de troisième (oui oui !) : Nombres et calculs, développer et factoriser, (in)équations, systèmes, équations de droites,
Exercices de Terminale : fonctions trigonométriques, puissances, dérivabilité, intégrales



Enfin, pour vous exercer au calcul mental, très important en Filière PTSI/PT car de nombreuses épreuves aux concours n’autorisent pas la calculette, y compris en SI : http://wims.unice.fr/wims ; rubrique : calcul mental en cascade.

Pollution, la face caché du numérique - Alternative économique Janvier 2020

Disponible dans tout bon CDI ;)
https://www.alternatives-economiques.fr/
Quelques mots clefs:
compétition avec le sommeil - poids croissant de la vidéo - équivalent co2 de la Russie - 10% conso mondiale d'éléctricité - faible recyclage - obsolescence

Bon ok, mais les derniers feuillets sont plus optimistes

mardi 21 janvier 2020

Image animée

Télécharger des images et vidéos libres de droits

https://pixabay.com/fr/

Si vous aimez le lait

Logiciel de montage vidéo

https://www.olivevideoeditor.org/

Procédure

Avec Olive Editor
  • Ouvrir la vidéo avec Olive Editor
  • Sélectionner la séquence ad hoc
  • Clic droit sur le lecteur pour exporter comme une image
Avec GIMP
  • Ouvrir votre export de la vidéo
  • Détourer une zone mobile
  • Ecraser l'export
Retour sous Olive
  • Déposer au dessus de la vidéo votre image détourée
  • Ajuster les deux éléments de votre timeline
  • Exporter au format gig
Retour sour GIMP
  • Ouvrir le fichier gif
  • Dans les calques supprimer les calques noirs au début et à la fin
  • Exporter comme animation 

Tuto en ligne

Pour vous aider voici l'article du WE montrant les étapes de création





Image animée avec GIMP


Le cinémagraphe, vous connaissez?

lundi 13 janvier 2020

vendredi 10 janvier 2020

Python et optimisation

https://www.geogebra.org/m/j6ugytgc

Jouer avec le curseur

Je cherche un programme en python affichant la somme de la longueur de L+M pour x (x correspond à la distance AE) allant de 0 à 4

Aide au script

Pour réussir:
  • j'ai eu besoin de sqrt d'ou l'import dès la première ligne de la fonction racine se trouvant dans la bibliothèque math
    from math import sqrt
  • vous remarquerez qu'en grattant un peu on peut calculer x avec un pas de 0,1
    x= 0.0.....    x= 0.1.....   x= 0.2.....
Pour vous aider vous trouverez en dessous l'affichage des valeurs de x, l(x), m(x), l(x)+m(x)
>>> %Run aa.py
x= 0.0  l(x)= 2.0  m(x)= 4.123105625617661  l(x)+m(x)= 6.123105625617661
x= 0.1  l(x)= 2.0024984394500787  m(x)= 4.026164427839479  l(x)+m(x)= 6.028662867289558
x= 0.2  l(x)= 2.009975124224178  m(x)= 3.9293765408777  l(x)+m(x)= 5.939351665101878
..............................
..............................
x= 3.8  l(x)= 4.294182110716777  m(x)= 1.019803902718557  l(x)+m(x)= 5.3139860134353345
x= 3.9  l(x)= 4.382921400162226  m(x)= 1.004987562112089  l(x)+m(x)= 5.387908962274315
x= 4.0  l(x)= 4.47213595499958  m(x)= 1.0  l(x)+m(x)= 5.47213595499958

lundi 6 janvier 2020

Séisme Antilles

Prérequis

Avoir installé la bibliothèque folium sous Thonny.
Disposer du fichier Chap6_Earthquake.csv
Avoir dans le même dossier le fichier csv et le programme .py

Script

import folium
carte = folium.Map(location=[16, -64], zoom_start=7)


f = open("Chap6_Earthquake.csv", "r")
entete = f.readline()
ligne = f.readline()
while ligne != "":
    y,l,g = ligne.split(";")
    print(float(l),float(g),y)
    folium.Marker([float(l),float(g)],popup=y).add_to(carte)
    ligne = f.readline()
f.close()
carte.save('Antilles.html')

Lien vers le dossier contenant le csv et le py

Source

Bordas, SNT 3.0, chapitre 6 

Séisme France du 1er janvier 2000 au 6 janvier 2020

Historique

Pour info entre l'an 2000 et 2020 il y eu 1532 séisme en France métropolitaine.

Structure du fichier csv

Champs = time;latitude;longitude;mag;place;type
Séparateur = ;


Script n°1 - Cercles de magnitude linéaire

(Rq: En France nous avons des petits tremblements de terre de magnitude entre 2 et 5, donc tous les cercles sont de tailles équivalentes!!)

Script n°1

import folium
carte = folium.Map(location=[47.25, -1.5], zoom_start=11)

f = open("seisme France 2000 a 2020.csv", "r")
entete = f.readline()
ligne = f.readline()

while ligne != "":

    tps,lat,long, mag, place,tpes = ligne.split(";")
 
    #présentation Circle sur plusieurs lignes pour faire plus joli
    folium.Circle(
        [lat,long],
        radius=float(mag)*5000,
        color="red",
        fill_color="red"
        ).add_to(carte)
    #fin 

    ligne = f.readline()
 

f.close()
carte.save('France.html')

Script n°2 - Cercles de magnitude exponentielle 

(Pour se faire peur ;)

Script n°2 

import folium
carte = folium.Map(location=[47.25, -1.5], zoom_start=9)

f = open("seisme France 2000 a 2020.csv", "r")
entete = f.readline()
ligne = f.readline()

while ligne != "":

    tps,lat,long, mag, place,tpes = ligne.split(";")
    #présentation Circle sur plusieurs lignes pour faire plus joli
    folium.Circle(
        [lat,long],
        radius=10**float(mag),
        color="red",
        fill_color="red"
        ).add_to(carte)
    #fin 

    ligne = f.readline()

f.close()
carte.save('France.html')

Ressources


jeudi 2 janvier 2020

Python et la physique des satellites

Objectif

Etudier la mécanique des satellites avec Python en utilisant les fonctions. Créer une représentation graphique.
Donnera lieu à un défi pour les secondes.

mercredi 1 janvier 2020

Stellarium - un planétarium en ligne

https://stellarium-web.org/

Présentation

Après une rapide prise en main, il est possible:
  • de jouer avec le temps sur une nuit pour voir les planètes
  • de changer le jour de l'observation
  • de lister les planètes visibles 
  • d'installer une appli sur son téléphone

GPS et satellite... amusons-nous avec de la méca

https://www.sciences.univ-nantes.fr/sites/genevieve_tulloue/Meca/Planetes/transfert.html
Un satellite est en orbite circulaire autour de la Terre, et il faut le transférer sur une autre orbite circulaire, en lui donnant de rapides impulsions (allumages d'un moteur pendant de courts instants). Il s'agit de réaliser la manoeuvre de la manière la plus économique possible. Comment s'y prendre ?

Manipulation
Pilotage manuel : choisir ΔV et donner l'impulsion. Observer l'effet d'une impulsion radiale ou d'une impulsion orthoradiale sur la trajectoire et sur le moment cinétique. Essayer de faire le changement d'orbite.
Pourquoi une impulsion radiale conserve-t-elle le moment cinétique ?

Pilotage automatique : par ce choix, la manoeuvre s'effectue toute seule, et les curseurs indiquent les valeurs des variations de vitesse.
Pourquoi faut-il augmenter deux fois la vitesse ?