Commit fd952373 authored by Emmalito Delar's avatar Emmalito Delar
Browse files

approximate

parent 5ef32768
#!/usr/bin/env python3
"""Module approximant la valeur de pie à l'aide de la méthode Monté-Carlo
et générant des images de la simulation."""
from sys import argv
from terminal import creation_image, generate_gif, verificateur
from simulator import tirage_point
from writing import ecriture_pi
def generate_ppm_file(cote, nb_point, nb_deci, nb_img, ppm, compteur):
"""Programme générant une image de notre simulation."""
global file_name
#On rajoute les points tirés dans la liste et calcule l'estimation de pi
estim_pi, compteur = tirage_point(cote, nb_point, ppm, nb_img, compteur)
estim_pi = str_pi(estim_pi,nb_deci)
#On crée une copie de l'image
ppm_copy = []
for elem in ppm:
ppm_copy.append(elem.copy())
#On écrit l'approximation sur l'image copié
ecriture_pi(ppm_copy, estim_pi, nb_deci, cote)
#Création et écriture du fichier contenant l'image copié
file_name.append(nom_image(estim_pi, nb_img))
creation_image(ppm_copy, cote, file_name[-1])
return compteur
def nom_image(nb_pi, num_img):
"""Retourne un str qui représente le
nom d'une image au format imgX_X-XXXX"""
nb_pi = nb_pi.split('.')
file_name = "img" + str(num_img) + "_" + nb_pi[0] + '-' + nb_pi[1] + ".ppm"
return file_name
def str_pi(nb_pi, nb_deci):
"""Formate l'int nb_pi en une chaine de
caractère de longueur 2 + nb_deci"""
nb_pi = str(nb_pi)[:nb_deci+2]
while len(nb_pi) < nb_deci+2:
nb_pi += '0'
return nb_pi
def approximate_pi():
"""Génération d'une image animée représentant notre simulation ."""
arguments = argv #On récupère les arguments passés en paramètre
global file_name #On récupère la liste contenant les noms des fichiers
compteur = 0 #On initialise le compteur servant à l'approximation de pi
#On vérifie que les arguments passés sont corrects et on les affecte aux variables
taille_image, nbr_point, nbr_deci = verificateur(arguments)
#On initialise la liste représentant l'image
liste_image = []
for _ in range(taille_image):
ligne =[0 for _ in range(taille_image*3)]
liste_image.append(ligne)
nbr_point_simulation = int(nbr_point/10)
#On génère les images puis le gif
for num_img in range(10):
compteur = generate_ppm_file(taille_image, nbr_point_simulation, nbr_deci, num_img, liste_image, compteur)
generate_gif(file_name)
if __name__ == "__main__":
file_name = []
approximate_pi()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment