Mathc gnuplot/Animer un point
Préambule
modifierCréer une animation avec la commande "pause 1" de gnuplot. La position du point est dans les fichiers a_p***. Dans cet exemple la commande "pause 1" a été oublié.
Présentation
modifierN'oubliez pas les fichiers *.h partagés et ceux de ce chapitre.
L'animation
modifierc01.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[-5.000:5.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paab" pt 7 ps 3
reset
plot[-5.000:5.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paac" pt 7 ps 3
reset
plot[-5.000:5.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paad" pt 7 ps 3
reset
plot[-5.000:5.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paae" pt 7 ps 3
reset
plot[-5.000:5.000] [-1.000:10.000]\
-0.5*x**2 + 1.0*x + 8.0 lt 13,\
"a_paaf" pt 7 ps 3
Les fichiers h de ce chapitre
modifierx_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 "kg_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";
kg_f.h La fonction graphique |
---|
/* ------------------------------------ */
/* Save as : kg_f.h */
/* ------------------------------------ */
void G_plt(
W_Ctrl w,
t_Ctrl Pic,
char feq[],
double (*P_f)(double x)
)
{
FILE *fp1;
FILE *fp2;
double p;
char files[]= "a_paaa";
fp1 = fopen("a_main.plt","w");
fprintf(fp1,"# Gnuplot file : load \"a_main.plt\" \n\n");
for(p=Pic.mini; p<Pic.maxi; p+=Pic.step)
{
fprintf(fp1," reset\n"
" plot[%0.3f:%0.3f] [%0.3f:%0.3f]\\\n"
" %s lt 13,\\\n"
" \"%s\" pt 7 ps 3 \n",
w.xmini,w.xmaxi,w.ymini,w.ymaxi,
feq,
NewName(files));
fp2 = fopen(files,"w");
fprintf(fp2," %+0.6f %+0.6f",p,(*P_f)(p));
fclose(fp2);
}
fclose(fp1);
}