 
 
 
 
 
   
| drawgraph_eggx.c | 
| /*
 * drawgraph_eggx.c --- drawgraph.c の EGGX 版
 *  コンパイル: egg drawgraph_eggx.c -o drawgraph_eggx
 */
#include <stdio.h>
#include <math.h>
#include <eggxlib.h>
double f(double);
int main()
{
  int win;
  int i, n;
  double a, b, xmin, xmax, ymin, ymax;
  double x, y, dx, pi;
  /* 円周率を求めておく */
  pi = 4 * atan(1.0);
  /* EGGX を初期化する */
  win = eggx_gopen(500, 500);
  /* ウィンドウをクリアする */
  eggx_gsetbgcolor(win, "black"); eggx_gclr(win);
  /* 線の色を赤にする */
  eggx_newcolor(win, "red");
  /* グラフを描く範囲 [a,b] */
  a = 0; b = 2 * pi;
  /* スクリーンに表示する範囲を指定 */
  xmin = a - (b - a) / 10; xmax = b + (b - a) / 10;
  ymin = - 1.2; ymax = 1.2;
  eggx_window(win, xmin, ymin, xmax, ymax);
  /* 1変数関数 f のグラフ */
  n = 100;
  dx = (b - a) / n;
  x = a; y = f(x); eggx_line(win, x, y, PENUP);
  for (i = 1; i <= n; i++) {
    x = a + i * dx; y = f(x); eggx_line(win, x, y, PENDOWN);
  }
  /* PNG形式で保存。"display mygraph.png" で再表示可能。 */
  eggx_saveimg(win, 0, xmin, ymin, xmax, ymax, "pnmtopng", 256, "mygraph.png");
  /* PostScript形式で保存。"ggv mygraph.eps" で再表示可能。 */
  eggx_saveimg(win, 0, xmin, ymin, xmax, ymax, "pnmtops -noturn -rle", 256, "mygraph.ps");
  eggx_saveimg(win, 0, xmin, ymin, xmax, ymax, "convert", 256, "mygraph.eps");
  /* VOGLE のウィンドウ内でキー入力を待つ (入力された文字を捨てる) */
  eggx_ggetch(win);
  /* VOGLE の終了 */
  eggx_gclose(win);
  return 0;
}
double f(double x)
{
  return sin(x) * cos(x);
}
 | 
コンパイルには egg コマンドを用いるのが簡単である。 egg コマンドは gcc を呼び出してコンパイルし eggx ライブラリィとリンクしている。 単に egg Cプログラム・ファイル名 とすると、 出来上がる実行形式の名前は a.out になるが、 -o ファイル名 とすることで 自分の好きな名前を指定することもできる。
| コンパイルと実行 (1) | 
| a308-06% egg drawgraph_eggx.c a308-06% ./a.out | 
| コンパイルと実行 (2) | 
| a308-06% egg drawgraph_eggx.c -o drawgraph a308-06% ./drawgraph | 
![\includegraphics[width=10cm]{mygraph.eps}](img1.png) 
 
 
 
 
