Problème de C école d'ingénieur

cs_Gualdim Messages postés 2 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 29 août 2008 - 28 août 2008 à 20:40
cs_Gualdim Messages postés 2 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 29 août 2008 - 29 août 2008 à 17:26
Bonjour,


je commence bientôt mon premier trimestre en école d'ingé; cette école
se destine non seulement aux étudiants ayant suivi un cursus normal,
mais aussi aux personnes, dont je fais parti, qui font un retour aux
études après quelques années de pratique comme technicien.

Mon souci est que j'ai travaillé dans un environnement où la
technologie a été conçue il y a 30 ans, à base de logique à relais, la
programmation en C est donc toute nouvelle pour moi...

Sauf qu'à la rentrée ça attaque dur dès le départ:

Voici un exemple de premier travail que je pourrait être amené à résoudre:


"Description du problème : Propagation des ondes

Votre tâche consiste à écrire un programme permettant de simuler la propagation d’une onde (ou de

plusieurs ondes) à la surface d’un liquide quelconque. Au départ, le liquide est stagnant. Si l’on

applique une poussée en un point, une onde se crée et se propage de chaque coté de la poussée."


"Stratégie à utiliser

Pour réaliser cette simulation, on commence par fractionner le liquide en N segments (rectangles

verticaux). Pour chacun d’eux, on conserve la hauteur, la vitesse et l’accélération du liquide à cet

endroit. Au départ la hauteur de tous les segments est la même (par exemple, 100) et la vitesse de

chaque segment est nulle. Tant que l’utilisateur ne souhaite pas terminer le programme, on réalise les

étapes suivantes :

1. Si l’utilisateur le souhaite, on ajoute une onde à la position demandée.

2. On met à jour l’accélération de tous les segments.

3. On met à jour la vitesse de tous les segments.

4. On met à jour la hauteur de tous les segments.

5. On affiche la hauteur de tous les segments."


"Introduction de nouvelles notations

Pour simplifier les expressions à venir, nous posons que :

i a = l’accélération du ième segment,

i v = la vitesse du ième segment et

i y = la hauteur du ième segment,

où i est un entier dans l’intervalle [1, N] ."


Ensuite j'ai 3 formules pour la mise à jour de l'accélération, de la vitesse et de la hauteur.


Puis une grosse formule décrivant la formation d'une onde.


"Recommandations et exigences supplémentaires

1) Vous n’avez besoin de créer qu’un seul fichier : Votre tâche consiste à écrire un

programme permettant de gérer la simulation. Pour vous aider, on vous fournit l’interface

graphique que vous devez utiliser sans la modifier.

2) Votre programme doit contenir un maximum de constantes de compilation : À chaque

fois que vous écrivez un nombre dans votre programme, posez-vous la question : « Puis-je

en faire une constante ? ».

3) Toutes les fonctions doivent être très courtes : Pour ce programme, une fonction faisant

plus de 15 lignes est nécessairement mal découpée."


Aucune variable globale acceptée, etc, etc.


Je ne sais vraiment pas par quel bout prendre ce problème. J'ai des
notions de C, je connais les fonctions, variables, pointeur,
différentes librairies de base, les tableaux... j'ai déjà fait quelques
petits programmes, mais jamais de graphique (si ce n'est quelques
rectangles sous SDL), et jamais plus que que deux ou trois fonction en
plus de Main (aucun header...)

Quel librairie me conseillez-vous?

Quelle serait votre démarche?


Toute aide sera grandement appréciée, je dois dire que je panique un peu présentement.


Je peux vous envoyer l'énoncé sous pdf le cas échéant.


Merci, Stef

2 réponses

SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
29 août 2008 à 09:15
Salut,


Tu a de la chance, j'ai mi une source en ligne le Week end dernier traitant justement de ce problème,

La surface du liquide est modélisé par un maillage masse ressort....


L'inerface est faite en Opengl (glut plus précisément), mais je pense que les calculs de positions

a partir de la dérivée seconde de l'accélération sont réutilisable dans le bout de code (interface)

que l'école à du te donner...


voilà le liens:

http://www.cppfrance.com/codes/MODELISATION-SURFACE-AVEC-MAILLAGE-MASE-RESSORT-OPENGL-GLUT_47704.aspx

Cordialement,
Sébastien.
0
cs_Gualdim Messages postés 2 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 17:26
Merci Sébastien,
entre-temps on m'a filé un gros coup de main; le code a été fait en utilisant SDL, il est parfaitement fonctionnel.

Stef
0
Rejoignez-nous