以下のプログラムは http://nalab.mind.meiji.ac.jp/~mk/labo/howto/glsc-progs/に置いてあります。
/*
* testdensity.c --- g_density_plot_color() のテスト
* GLSCWIN が必要です。
* 桂田研パソコンならば glscd testdensity.c でコンパイル可能
*/
#include <stdio.h>
#define G_DOUBLE
#include <glsc.h>
#define N (100)
double pi;
double f(double x, double y)
{
return sin(pi * x) * sin(pi * y);
}
int main()
{
double xmin, xmax, ymin, ymax, w_margin, h_margin, w_width, w_height;
G_REAL u[N+1][N+1];
int i, j, n, nx, ny;
double x, y, dx, dy;
nx = ny = N;
pi = 4 * atan(1.0);
/* 矩形領域を定める */
xmin = -1.0; xmax = 1.0; ymin = -1.0; ymax = 1.0;
/* ウィンドウのサイズ */
w_margin = 1.0; h_margin = 1.0; w_width = 100.0; w_height = 100.0;
/* GLSC の開始 */
g_init("DENSITY", w_width + 2 * w_margin, w_height + 2 * h_margin);
g_device(G_BOTH);
/* 座標系を決める */
g_def_scale(0,
xmin, xmax, ymin, ymax,
w_margin, h_margin, w_width, w_height);
g_sel_scale(0);
/* 格子点上での関数値の計算 */
dx = (xmax - xmin) / nx;
dy = (ymax - ymin) / ny;
for (i = 0; i <= nx; i++) {
x = xmin + i * dx;
for (j = 0; j <= ny; j++) {
y = ymin + j * dy;
u[i][j] = f(x,y);
}
}
/* */
g_density_plot_color((G_REAL *)u, nx + 1, ny + 1, 0, nx, 1, 0, ny, 1,
G_NO, G_NO,
xmin, xmax, ymin, ymax,
-1.0, 1.0);
g_sleep(-1.0);
g_term();
return 0; // もしマウス・クリックだけで終了したいのならば exit(0); とする。
}
桂田 祐史