2001年4月15日 time追加
関谷トップページへ
CG2001 トップページへ
gnorm.c 正規分布曲線 SLS によるWindowsでのグラフィックス
/* gnorm.c 正規分布曲線 SLS によるWindowsでのグラフィックス 1996.4.25, 2001.4.15 time追加 関谷*/
/* 平林雅英著、Windows95プログラムを10倍簡単に作る、共立出版,1996.4*/
#include <math.h> /* for exp(), sqrt() */
#include <stdarg.h> /* for sprintf() 数値を文字列に変換する */
#include <stdlib.h> /* EXIT_SUCCESS */
#include <time.h>
#include "gint.f" /* グラフィックス初期化関数 gint,gend */
#include "line.f" /* 線関数 */
#include "symbol.f" /* 文字列拡大関数 */
#include "symbolv.f" /* 縦書き文字列拡大関数(sz追加分) */
#include "rectfxor.f" /* 長方形塗りつぶし関数 */
main()
{
static int origx=100,origy=410; /* 原点のスクリーン座標 */
static int scalex=100,scaley=1000; /* スクリーン座標の倍率 */
int gx,gy, gxold, gyold; /* 点の座標 */
double u, p, x, y ; /* u:確率変数、p:確率密度関数、軸の目盛り用*/
int i;
static double pai=3.141596;
char *pa, axis_val[10]; /* *pa:日付用文字列(ポインタ変数)、axis_val:軸の目盛り数字 */
long nowtime;
time(&nowtime);
pa = ctime(&nowtime);
*(pa+24)='\0';
printf("<%s>\n", pa); /* 実行年月日・時間などをコマンドプロンプトに表示する。 */
gint(640,480); /* グラフィックス初期化(640x480dot) */
symbol(50, 20," 正規分布曲線 (SLS作図)",6,3.,3.);
symbol(400, 80,"by 関谷順太",6,2.,2.);
symbol(400, 120, pa, 5,1.,1.5);
line(origx,origy,origx+500,origy,6); /* X軸 x軸にyellow線を引く */
line(origx,origy,origx,origy-400,4); /* Y軸 y軸にgreen線を引く */
for(i=0; i<101; i++){ /* 正規分布曲線の点座標計算と直線plot */
u = 0.05*i; p = 1.0/sqrt(2.0*pai) * exp(-u*u/2.0);
gx = origx + scalex * u;
gy = origy - scaley * p;
if( i >0 )
line(gxold,gyold,gx,gy,6);
gxold = gx; gyold = gy;
}
for(i=0; i<6; i++){ /* X軸目盛と数値 x axiss scale plot */
x = i; gx = origx + scalex * x;
line( gx, origy, gx, origy+5, 6);
sprintf(axis_val, "%3.1f", x); /* 数値を文字列への変換 */
symbol(gx-12, origy+10, axis_val, 6, 1.,1.);
}
symbol( gx/2,origy+30, "u: 連続型確率変数", 6,1.,1.);
for(i=0; i<5; i++){ /* Y軸目盛と数値 y axiss scale plot */
y = 0.1 * i; gy = origy - scaley * y;
line( origx, gy, origx - 5, gy, 4);
sprintf(axis_val, "%3.1f", y);
symbol(origx-32, gy-8, axis_val, 4, 1.,1.);
}
symbolv(origx-75,origy-50, "y: 確率密度関数", 6,2.,2.);
rectfillXOR(0,0,639,479,7);
gend(); /* グラフィックス終了 */
return EXIT_SUCCESS;
} /* main */ /** 終わり **/