Simulation de la diffraction

Soyez le premier à donner votre avis sur cette source.

Vue 3 002 fois - Téléchargée 214 fois

Description

Ce programme permet de simuler une diffraction de couronnes concentriques (une ou plusieurs) et de la visualiser puis de zoomer ou d'enregistrer l'image dans un fichier qui va etre cree et qui s'appelle "images"(ce n'est pas un format lisible...)
Attention:
Pour pouvoir executer ce programme, il faut absolument copier le fichier "egavga.bgi" dans le meme dossier qui contient le programme.

Conclusion :


La longueur d'onde en 10^(-5) ou moins reste encore tres lent a cause de l'echantillonnage, si quelqu'un est interesse par la version sans echantillonnage (beaucoup plus rapide), qu'il me le fasse savoir et je l'enverrai aussi.

Sinon, n'hesitez pas à mettre des commentaires et à me signaler les maladresses de programmation...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
5
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
15 mars 2007

En fait, tu as raison, mais dans notre TP, on etait contraints d'utiliser uniquement le langage C et pas du tout C++.
Mais merci quand meme pour ton commentaire, j'essaierai de faire ca parce que c'est vrai que c'est tres lent...

Bonne journee,

Titip
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

me suis trompé, ds l'appel à cos() j'ai mis des degrés, il faut des radians, mais ça avec une fonction inline tu t'en sors vite fait.

aussi, ton define de PI est pas entièrement utile. la précision des float est limitée à 6 décimales (et encore!), donc tes 30 décimales servent pas à grand chose ;-)

vala
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

Pour les fonctions trigonométriques, ce qu'on fait souvent c'est d'au lancement du programme sauver autant de valeur que l'on veut (en fct de la précision désirée) ds des tableaux, et puis tu vas chercher tes valeurs là dedans, parce que là c bcp trop lent, j'ai essayé avec 10 cercles, 20 minutes O_o (enfin, quasiment, 1099 s)

Si tu veux une précision à un centième de degré près (tu travailles en degré ou en radians? enfin, vais le faire en degrés)

tu fais ça

float *tCosinus = new float[360 * 100];
for(int i=0; i < 360 * 100; i++)
tCosinus[i] = cos((float)i/100.0);

et pour récupérer les valeurs bien entendu comme ceci:
val = tCosinus[angle * 100.0];

ça met un peu de temps au démarrage mais c'est (probablement) un bon gain à l'utilisation. si tu testes, tu me diras quoi?

Bonne journée,

Kirua

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.