これは,振り子が動く図をたくさん出力します
これをimagemagickのconvertを使って動画にします
たとえば,
convert -delay 10 IMGSEQUENCE/*.gif a.mpg
こんな感じです
ちょっと複雑になりました
ちょっと複雑になりました
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(void) {
FILE *gid, *data;
char *data_file, *k,kk[20],k1[10],k2[10],k3[10];
float dx, x, y,th,vth,al,dt;
int i, imax,j ,jmax,j1,j2,j3;
imax=1;
jmax=200;
gid = popen("gnuplot -persist", "w");
fprintf(gid, "set xrange [-2:2]\n");
fprintf(gid, "set yrange [-2:2]\n");
fprintf(gid, "set term gif truecolor size 640,480\n");
data_file="out.dat";
dx=0.4/imax;
dt=0.2;
al=0.1;
x=0;
th=1;
vth=0;
for(j=0; j
j1=j%10;
j2=((j-j1)%100)/10;
j3=j/100;
sprintf(k1,"%d",j1);
sprintf(k2,"%d",j2);
sprintf(k3,"%d",j3);
sprintf(kk,"data/outdata%d",j);
data_file=kk;
data = fopen(data_file,"w");
fprintf(data,"%f\t%f\n", 0.0 ,0.0);
// for(i=0; i<=imax; i++){
th+=vth*dt;
vth+=-al*th*dt;
x=sin(th);
y=-cos(th);
fprintf(data,"%f\t%f\n",x, y);
x+=dx;
// }
fclose(data);
sprintf(k,"%d",i);
// printf("%s\n",k);
strcat(k,k3);
strcat(k,k2);
strcat(k,k1);
fprintf(gid, "set output 'IMGSEQUENCE/sequence0%s.gif' \n",k);
fprintf(gid, " plot '%s' w l \n",kk);
fprintf(gid, "set output \n");
};
pclose(gid);
return 0;
}
0 件のコメント:
コメントを投稿