-4

問題は、適切な円が得られないことです。たとえば、座標:9,8 と半径:8 を入力すると...ポイントがほとんど得られません..誰かが完全な円を取得する方法を教えてもらえますか?このコードの何が問題なのですか? 組み込み関数は使用できません。

4

3 に答える 3

1

これは正しくありません

if(sqrt(pow(i,2)+ pow(j,2))== radius)

これら 2 つの値が完全に一致することは非常にまれです。代わりに、2 つの数値がほぼ等しいかどうかを確認するテストを行う必要があります。たとえばこのように

if (fabs(sqrt(pow(i,2)+ pow(j,2)) - radius) <= 0.001)

sqrt(pow(i,2)+ pow(j,2))これは、とradiusが互いに 0.001 以内であるかどうかをテストします。0.001 の値を別の値に変更する必要がある場合があります。それはあなたの座標系に依存します。

于 2012-11-20T17:11:40.887 に答える
1

中点円アルゴリズムを使用する必要があります。

整数演算のみを使用するため、高速で正確です。

于 2012-11-20T17:12:21.613 に答える
0

このコードで何が間違っていますか?

はい、どうぞ:

if (sqrt(pow(i, 2) + pow(j, 2)) == radius)

を使用して浮動小数点数を比較しないでください==。期待どおりに動作しません。代わりに、半径に近いかどうかを確認する必要があります。

if (sqrt(pow(i, 2) + pow(j, 2)) >= radius * 0.95)

例えば。

于 2012-11-20T17:11:48.730 に答える