ページ 11

楕円をかくプログラム

Posted: 2011年5月14日(土) 11:56
by dic
どうしても解けないので質問させてください
現在、楕円を描くプログラムを作っています
http://www.est.hi-ho.ne.jp/aiha/jyutaku/daen.htm
ここを参考にして作っています
そして

コード:

//==================================================================
void	func1()
{
	static	int	x;
	double	y;
	static	double	a = 100;
	static	double	b = 50;

	y = sqrt( b*b - (b*b*x*x)/a*a );
	DrawFormatString( 0, 20, GetColor(255,0,0), "%f", y );

	DrawLine( 320, 240, 320+x, 240-y, GetColor(255,255,255) );

	x++;
}
までつくったのですが、y の値が -1.#IND00 と表示され 値が分からない状態です
ググってもでてこなかったのですが、この -1.#IND00 とはどのような値なのでしょうか?

また、計算式に間違いなどないでしょうか?

楕円を描く関数はつかわなくて、楕円の軌道を知りたいのです

Re: 楕円をかくプログラム

Posted: 2011年5月14日(土) 12:15
by dic
計算の途中で情報が落ちていないか別の方法で計算したら
ぶじ楕円形が描けました

コード:

//==================================================================
void	func1()
{
	static	int	x = -100;
	double	y;
	static	double	a = 100;
	static	double	b = 50;

	//	多分桁落ち?
//	y = sqrt( b*b - (b*b*x*x)/a*a );

	double	b1, b2, b3;
	b1 = b*b;
	b2 = b*b*x*x;
	b3 = a*a;
	y = sqrt( b1 - b2/b3 );

	DrawFormatString( 0, 20, GetColor(255,0,0), "%f", y );

	DrawLine( 320, 240, 320+x, 240-y, GetColor(255,255,255) );
	DrawLine( 320, 240, 320+x, 240+y, GetColor(255,255,255) );

	if( x < a )
		x++;
}

Re: 楕円をかくプログラム

Posted: 2011年5月14日(土) 18:26
by arcs
桁落ちとかではなく、a*aに括弧がありませんので、a*aで割るのではなく、
aで割ってaを掛けるという処理になってしまっているためですね。

Re: 楕円をかくプログラム

Posted: 2011年5月15日(日) 19:29
by dic
>>arcsさん
修正したらなおりました