// [このプログラムの目的]1個のハート形曲線を描くこと,2007年12月25日(火)

// file name: heart_curve_b1.c



#include< stdio.h>

#include< math.h>



void main(void)

{

	double x,y,b;

	int i,imax,j;

	double xmax,dx;

	double xx[10005],yy[10005];// 配列を格納するメモリ容量の上限に注意



	FILE *fp;



// パラメータ設定

	b=0.8;



	xmax=1;// x の最大値

	dx=xmax/1000;// x のプロット間隔



	i=0;



// 計算実行

	for(x=0;x<=xmax;x=x+dx)

	{

		i++;



		xx[i]=x;

		y=sqrt(1-x*x)+b*sqrt(x);

		yy[i]=y;



		printf("i=%d,b=%f,x=%f,y=%f\n",i,b,x,y);

	}



	for(x=xmax;x>=0;x=x-dx)

	{

		i++;



		xx[i]=x;

		y=-sqrt(1-x*x)+b*sqrt(x);

		yy[i]=y;



		printf("i=%d,b=%f,x=%f,y=%f\n",i,b,x,y);

	}



	for(x=0;x>=-xmax;x=x-dx)

	{

		i++;



		xx[i]=x;

		y=-sqrt(1-x*x)+b*sqrt(-x);

		yy[i]=y;



		printf("i=%d,b=%f,x=%f,y=%f\n",i,b,x,y);

	}



	for(x=-xmax;x<=0;x=x+dx)

	{

		i++;



		xx[i]=x;

		y=sqrt(1-x*x)+b*sqrt(-x);

		yy[i]=y;



		printf("i=%d,b=%f,x=%f,y=%f\n",i,b,x,y);

	}



	imax=i;

	j=0;



// 計算データのテキストファイルへの書き込み

	fp=fopen("heart_curve.txt","w");



	if(fp==NULL)

	{

		printf("FILE OPEN ERROR\n");

	}

	else

	{

		for(i=1;i<=imax;i++)

		{

			fprintf(fp,"%f,%f\n",xx[i],yy[i]);

		}



		fflush(fp);

		fclose(fp);

	}



	printf("end\n");

}// the end of the program





戻る