Representation spatio temporelle

keno83 Messages postés 16 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 6 septembre 2006 - 17 août 2006 à 21:54
elinep Messages postés 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 3 décembre 2009 - 3 sept. 2006 à 23:04
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

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
17 août 2006 à 22:26
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.
0
keno83 Messages postés 16 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 6 septembre 2006
18 août 2006 à 01:25
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
0
elinep Messages postés 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 3 décembre 2009
19 août 2006 à 16:57
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.
0
keno83 Messages postés 16 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 6 septembre 2006
2 sept. 2006 à 00:28
Voila ce que je demande: si quelqu'un sait comment obtenir ce type d'image..merci

http://img458.imageshack.us/img458/2097/sanstitreoa3.png
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elinep Messages postés 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 3 décembre 2009
2 sept. 2006 à 09:24
Est ce que tu sais deja manipuler des images dans tes programmes (creer, afficher, ....) ?
0
keno83 Messages postés 16 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 6 septembre 2006
2 sept. 2006 à 19:55
non pas du tout.
Comment fait on ?
0
elinep Messages postés 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 3 décembre 2009
2 sept. 2006 à 23:30
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.
0
keno83 Messages postés 16 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 6 septembre 2006
3 sept. 2006 à 11:52
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
0
elinep Messages postés 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 3 décembre 2009
3 sept. 2006 à 14:25
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?
0
keno83 Messages postés 16 Date d'inscription lundi 24 juillet 2006 Statut Membre Dernière intervention 6 septembre 2006
3 sept. 2006 à 22:48
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
0
elinep Messages postés 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 3 décembre 2009
3 sept. 2006 à 23:04
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.
0
Rejoignez-nous