2010年8月6日金曜日

open その2

テストプログラムを作って見ました

これは,振り子が動く図をたくさん出力します
これを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 件のコメント:

コメントを投稿