gnuplot:3次元空間で点が動くアニメーションをファイルを読まずに作るC言語コード

題名の通り。set viewによる視点移動も。



#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double t,dt;
int main(){

  double t=0,dt=0.01;
  FILE *gp;
  gp = popen("gnuplot --persist","w");
  fprintf(gp,"set zrange [-300:300]\n");
  fprintf(gp,"set xrange [-20:20]\n");
  fprintf(gp,"set yrange [-20:20]\n");
  while(1){
    fprintf(gp,"set view 30,30*%lf\n",fmod(t,12));
    fprintf(gp,"splot %lf*x*x+%lf*y*y\n",sin(t),cos(t));
    fprintf(gp,"set label 1 point pt 7 pointsize 3 lc 1 at %lf,%lf,%lf\n",
	    t,20*cos(t),20*sin(t));
    fprintf(gp,"set label 2 point pt 2 ps 5 lc 2 at %lf,%lf,%lf\n",
	    2*sin(t),20*cos(2*t),20*sin(t));
    fprintf(gp,"set label 3 point pt 3 ps 10 lc 3 at %lf,%lf,%lf\n",
	    2*sin(7*t),20*cos(3*t),20*sin(4*t));
    fprintf(gp,"replot\n");
    t+=dt;
  }
  pclose(gp);
  return 0;
}

2次元アニメーションは次の過去記事のようにしてつくる。


C言語+gnuplot+popenを使った簡単なアニメーション作成プログラム - メモやなぎ