Mathc gnuplot/Animer deux points
Apparence
Préambule
[modifier | modifier le wikicode]Créer une animation avec la commande "pause 1" de gnuplot. La position des deux points sont dans les fichiers a_p***
Présentation
[modifier | modifier le wikicode]N'oubliez pas les fichiers *.h partagés et ceux de ce chapitre.
L'animation
[modifier | modifier le wikicode]c01.c Créer une liste de commande. |
---|
/* ------------------------------------ */
/* Save as : c01.c */
/* ------------------------------------ */
#include "x_ahfile.h"
#include "f.h"
/* ------------------------------------ */
int main(void)
{
G_plt(i_WGnuplot(-5,5, -1,10),
i_time(-3.,5., .01),
feq,f);
printf(" open the file \"a_main.plt\" with Gnuplot.\n\n"
" Press return to continue\n");
getchar();
return 0;
}
Le résultat.
# Gnuplot file : load "a_main.plt"
reset
plot[-4.000:6.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paab" pt 7 ps 3
reset
plot[-4.000:6.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paac" pt 7 ps 3
reset
plot[-4.000:6.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paad" pt 7 ps 3
reset
plot[-4.000:6.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paae" pt 7 ps 3
Les fichiers h de ce chapitre
[modifier | modifier le wikicode]x_ahfile.h Appel des fichiers |
---|
/* ------------------------------------ */
/* Save as : x_ahfile.h */
/* ------------------------------------ */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include <math.h>
#include <string.h>
/* ------------------------------------ */
#include "xdef.h"
#include "xplt.h"
/* ------------------------------------ */
#include "xg_f.h"
f.h La fonction à dessiner |
---|
/* ------------------------------------ */
/* Save as : f.h */
/* ------------------------------------ */
double f(
double x)
{
return( -0.5*x*x + 1.0*x + 8.0);
}
char feq[] = "-0.5*x**2 + 1.0*x + 8.0";
xg_f.h La fonction graphique |
---|
/* ------------------------------------ */
/* Save as : xg_f.h */
/* ------------------------------------ */
void G_plt(
W_Ctrl w,
t_Ctrl Pic,
char feq[],
double (*P_f)(double x)
)
{
FILE *fp1;
FILE *fp2;
double p,q;
char files[] = "a_paaa";
fp1 = fopen("a_main.plt","w");
fprintf(fp1,"# Gnuplot file : load \"a_main.plt\" \n\n");
for(p=q=Pic.mini; p<Pic.maxi; p+=Pic.step)
{
fprintf(fp1," reset\n"
" pause %0.2f \n"
" plot[%0.3f:%0.3f] [%0.3f:%0.3f]\\\n"
" %s lt 13,\\\n"
" \"%s\" pt 7 ps 3 \n",
Pic.step,w.xmini,w.xmaxi,w.ymini,w.ymaxi,
feq,
NewName(files));
fp2 = fopen(files,"w");
fprintf(fp2," %+0.6f %+0.6f\n",p,(*P_f)(p));
fprintf(fp2," %+0.6f %+0.6f\n",q,(*P_f)(p));
fclose(fp2);
}
fclose(fp1);
}