Representation spatio temporelle

Signaler
Messages postés
16
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2006
-
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009
-
Rebonjour,
j'écris ce petit message car j'aimerai savoir comment faire la represnetation spatio temporelle d'une equation.
Par la je veux dire: il y a deux ans on m'avait fourni un petit programme en C qui m'avait alors permis de representer l'évolution d'une equation par une image en noir et blanc avec en abscisse l'espace (x en 1 dimension) et le temps en ordonnée.Mais je ne me souviens plus du tout du nom de  ce programme, ou son code etc etc.
Ne sachant pas si mon explication est claire, je joins a ce message une illustration d'une image reprensentation une evolution spatio temporelle d'une equation:
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 296.25pt; HEIGHT: 144.75pt" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:/DOCUME~1/PROPRI~1/LOCALS~1/Temp/msoclip1/01/clip_image001.png"></v:imagedata></v:shape>

Merci d'avance pour toute aide eventuelle</v:shapetype></v:shapetype>

11 réponses

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
21
Salut,

L'image que tu as insérée est en local sur ton disque dur. Nous ne la voyons pas !!


Avec cette adresse :
file:///C:/DOCUME~1/PROPRI~1/LOCALS~1/Temp/msoclip1/01/clip_image001.png

On ne risque pas de voir quelque chose ... puisqu'à part toi, personne n'a cette image sur son poste.

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Messages postés
16
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2006

effectivement...je n'arrive pas a ajouter l'image en fait.

Y a pourtant bien un icone 'inserer une image' mais il n'y a pas de
quoi parcourir son disque dur pour aajouter cette fameuse image
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

Upload ton image sur un serveur genre imagehack (http://www.imageshack.us/) ensuite tu utilises l'url que le site te donne (pour ton image) pour l'inserer dans ton commentaire.
Messages postés
16
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2006

Voila ce que je demande: si quelqu'un sait comment obtenir ce type d'image..merci

http://img458.imageshack.us/img458/2097/sanstitreoa3.png
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

Est ce que tu sais deja manipuler des images dans tes programmes (creer, afficher, ....) ?
Messages postés
16
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2006

non pas du tout.
Comment fait on ?
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

Ce qui suit utilise l'api win32 je sais pas si tu connais....je suppose que oui pour l'instant :

Tu peux par exemple utiliser la structure BITMAPINFO dans laquel tu renseignes diverses informations taille, niveau de couleur, etc...
Ensuite tu créer un tableau de pixel qui representera ton image.
Enfin a l'aide de la fonction SetDIBitsToDevice() tu affiche cette image à l'ecran.
 Voici un bout de code trouve sur cpp :

void AfficheImage(int x, int y)
{
 int i, j; // Bcl



 LPBYTE lpBits = new BYTE[4*320*240]; // Idem
    BITMAPINFO bmpinfo;      // info sur l'image



 // Donne les infos sur le bitmap
    bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    bmpinfo.bmiHeader.biWidth = 320;
    bmpinfo.bmiHeader.biHeight = 240;
    bmpinfo.bmiHeader.biPlanes = 1;
    bmpinfo.bmiHeader.biBitCount = 32;
    bmpinfo.bmiHeader.biCompression = BI_RGB;
    bmpinfo.bmiHeader.biSizeImage = 0;
    bmpinfo.bmiHeader.biXPelsPerMeter = 0;
    bmpinfo.bmiHeader.biYPelsPerMeter = 0;
    bmpinfo.bmiHeader.biClrUsed = 0;
    bmpinfo.bmiHeader.biClrImportant = 0;



 // Parcoure le tbl
 for(i=0; i<240; i++)
  for(j=0; j<320; j++)
  {
   lpBits[4*320*(239-i)+4*j+2] =0;     // Composante rouge du Pixel
   lpBits[4*320*(239-i)+4*j+1] =255; // Composante verte du Pixel
   lpBits[4*320*(239-i)+4*j] =0          // Composante bleu du Pixel
  }



 // Affiche l'image
 SetDIBitsToDevice(hDC, x, y, 320, 240, 0, 0, 0, 240, lpBits, &bmpinfo, DIB_RGB_COLORS);



 // Fait le ménage
 free(lpBits);
}

Cette fonction va par exemple colorier une image de 320*240 en vert et l'afficher sur la fenetre a la position x,y.
Je precise que hDC = GetDC (hwnd) ou hwnd est le handle de ta fenetre.

/////////////////
 La representation de l'equa dif :

Si je comprend bien tu veux representer un systeme a deux variables qui evoluent au cours du temps (exemple une corde qui vibre ?)
Donc a chaque instant (au cours du temps donc) tu vas calculer la hauteur de chaque point qui constitue ta corde. En un point ou la corde est haute tu vas colorier le Pixel en noir. En revanche un point ou la corde est basse le point sera plutot blanc (ou l'inverse).
Donc pour chaque pas de x (chaque tranche de ton image) tu dessines l'etat de ta corde apres avoir calculer pour chaque point (les y) sa hauteur et en deduire une couleur.

Le principe :
Soit une image de largeur x et de hauteur y
Boucle sur x       // j'avance au cours du temps
   Boucle sur y   // pour chaque pas au cours du temps
      colorier (couleur, x, y)    // pour chaque point de ma corde y je colorie en fonction de la hauteur de la corde en ce point

Tu devras calculer la bonne echelle :
   Exemple : ton image fait A de large, B de haut et affiche 255 niveaux de gris.

Si tu veux etudier le systeme de 0s à 10s => entre deux pixel (en largeur) consecutif tu auras 10/A secondes.
Si ta corde fait 10 mètres de long => Entre deux pixels (en hauteur) tu auras 10/B metres
Si la hauteur de ta corde varies entre p metres et p' metres => la differences de deux niveaus de gris consecutifs representera |p - p'|/255 metres

/////////////////

En esperant avoir bien conpris ton probleme et t'avoir eclaire.
Messages postés
16
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2006

Je vais essayer d'etre plus claire vu qu'aparemment je n'ai pas été compris:
l'équation de Schrodinger....cela dit quelque chose a quelqu'un?
En bien a partir de cette equation que j'ai resolu,equation dependant du temps et de l'espace, je souhaite obtenir l'image de cette fonction ou en abscisse il y a la  position x et en ordonnée le temps.
Dans un premier temps, j'ai d'abord resolu cette equation en "discretisant", je ne sais pas si ce terme est adéquate mais pour expliquer j'ai echelonnée le temps et j'ai calculé f(x).
En resumé:
f(x,t)
a t=0 --> f(x)
a t=1 -->f(x)
a t=2 -->f(x)
etc etc
 
J'ai donc tout ca dans un fichier
Et ce que j'aimerai faire...ou plutot ce qui me semble logique de faire c'est de me servir des données precedemment obtenus pour faire mon image...
Je ne sais pas si tout ca est clair...j'espere en tout cas que cela vous aura éclairé sur ma demande d'aide

Je vais etudier ta proposition elinep...en tou cas grand merci d'avoir pris le temps d'ecrire tout ca pour m'aider...vraiment merci
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

En fait tu representes à plusieurs instants ta fonction f mais non pas dans le plan (x,y) mais dans le plan (y,couleur). Donc ton probleme c'est de traduire la valeur f(x) en une couleur. La couleur étant la 3e dimension de ta représentation. non?
Messages postés
16
Date d'inscription
lundi 24 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2006

Je ne suis pas su d'avoir compris ton message...parce que en fait il me semble que la represnetation que j'essaie d'obtenir est dans le plan (x,t) -->(position,temps) et que suivant la valeur de f(x,t) le pixel est plus ou moins noir.
Ca tombe c'est ce que tu m'as expliqué...si c'est le cas désolé.
En tout cas encore merci...et ou puis je trouver l'integralité du code que tu as cité ci dessous histoire de comprendre un peu que fait quoi parce que je t'avoue que c'est encore un peu brouillon dans mon esprit ces histoires de bmpinfo
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

Oui c'est ce que j'avais compris.
Le code que j'ai posté viens de cette source :
http://www.cppfrance.com/code.aspx?ID=24541

A la base cela permet de capturer l'image de la webcam et d'appliquer differents filtres avant de l'afficher a l'ecran.
Ca va peut etre te paraitre un peu complique si tu n'as jamais trop touche a la programmation windows.