楕円をかくプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic
記事: 658
登録日時: 14年前
住所: 宮崎県
連絡を取る:

楕円をかくプログラム

#1

投稿記事 by dic » 14年前

どうしても解けないので質問させてください
現在、楕円を描くプログラムを作っています
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 とはどのような値なのでしょうか?

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

楕円を描く関数はつかわなくて、楕円の軌道を知りたいのです
添付ファイル
無題.JPG
無題.JPG (16.67 KiB) 閲覧数: 3719 回

dic
記事: 658
登録日時: 14年前
住所: 宮崎県
連絡を取る:

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

#2

投稿記事 by dic » 14年前

計算の途中で情報が落ちていないか別の方法で計算したら
ぶじ楕円形が描けました

コード:

//==================================================================
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++;
}

arcs

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

#3

投稿記事 by arcs » 14年前

桁落ちとかではなく、a*aに括弧がありませんので、a*aで割るのではなく、
aで割ってaを掛けるという処理になってしまっているためですね。

dic
記事: 658
登録日時: 14年前
住所: 宮崎県
連絡を取る:

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

#4

投稿記事 by dic » 14年前

>>arcsさん
修正したらなおりました

閉鎖

“C言語何でも質問掲示板” へ戻る