keno83
Messages postés16Date d'inscriptionlundi 24 juillet 2006StatutMembreDernière intervention 6 septembre 2006
-
17 août 2006 à 21:54
elinep
Messages postés56Date d'inscriptionjeudi 4 décembre 2003StatutMembreDerniè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>
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutModérateurDernière intervention23 décembre 200823 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.
elinep
Messages postés56Date d'inscriptionjeudi 4 décembre 2003StatutMembreDerniè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.
elinep
Messages postés56Date d'inscriptionjeudi 4 décembre 2003StatutMembreDerniè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
}
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.
keno83
Messages postés16Date d'inscriptionlundi 24 juillet 2006StatutMembreDerniè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
elinep
Messages postés56Date d'inscriptionjeudi 4 décembre 2003StatutMembreDerniè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?
keno83
Messages postés16Date d'inscriptionlundi 24 juillet 2006StatutMembreDerniè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
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.