私たちが開発しているゲームを最適化すると、すべての CPU サイクルがカウントされるフェーズに突入します。他のオブジェクトの周りを回るオブジェクトの位置計算にラジアンを使用していますが、ルックアップ テーブルで不必要な精度を削減したいと考えています。そのために、定義済みの Pi を多用します。この Pi はどのくらい正確ですか?
だから、私の質問は:
- どのくらい正確ですか?
- またはさらに良いことに、必要な精度を決定する方法は?
私たちが開発しているゲームを最適化すると、すべての CPU サイクルがカウントされるフェーズに突入します。他のオブジェクトの周りを回るオブジェクトの位置計算にラジアンを使用していますが、ルックアップ テーブルで不必要な精度を削減したいと考えています。そのために、定義済みの Pi を多用します。この Pi はどのくらい正確ですか?
だから、私の質問は:
格納できる浮動小数点表現と同じくらい正確にすることもできます。同じ型のより正確な浮動小数点数を使用して計算を実行するのに、それほど時間はかかりません。
精度は通常、有効桁数として測定されます。関心のある精度の桁数を自分で決定する必要があります。pi に精度の低い値を使用すると、その値の不正確さが他の計算に反映されます。
比較として: NASA は、宇宙にドッキングできるように、小数点以下 7 桁の精度で pi を使用していると思います。
まず第一に、位置計算がどの程度正確である必要があるか、つまり、pi に依存するプログラム内の式がどの程度正確でなければならないかを決定する必要があります。これを達成するために必要な正確な円周率を知るために、そこから始める必要があります。
それが決定されたら、多かれ少なかれ単純な数値解析を使用して、pi に必要な精度を決定できます。私はそれを手伝うことができますが、それを行うには位置式が必要です:)
編集:あなたの数式は pi に線形依存していると思われます。つまり、pi が 2 乗されているか、類似しているあいまいな関数 f(x,y,z,pi) を使用していません。その場合、式の精度は pi 精度の係数倍になります (例: k*eps(pi))。それ以外の場合は、基本的に、pi に関する f の導関数の倍数です。f に依存する他のすべてのパラメータの精度はカウントされません。
乾杯 !
これは、計算に含まれる有効桁数によって異なります。式を考えると
C = パイ * d
直径 1マイルの円の円周が何インチか知りたい場合、必要な精度を維持するには 6 桁の円周率が必要です。円周。答えには有効数字が 6 桁あるので、必要な精度で計算するには 6 桁の円周率が必要です。
3.14 * 63,360 = 198950.4
3.142 * 63,360 = 199077.12
3.1416 * 63,360 = 199051.776
3.14159 * 63,360 = 199051.1424
ご覧のとおり、この場合は 5 桁の pi で正しい答えが得られましたが、常にそうとは限りません。十分な精度を確保するには、少なくとも有効桁数と同じ桁数の pi が必要です。
事前に計算して保存している場合は、システムの数学ライブラリを使用して、できるだけ正確に計算することができます。良いオプションは次のとおりです。
double PI = (16.0 * atan(1/5)) - (4.0 * atan(1/239));
これにより、起動時に計算し、必要に応じて再利用できる PI のかなり正確な値が得られます。簡単に再利用できるバージョンよりも正確なバージョンを取得することは困難です。
あなたが何をしているのかは完全には明らかではありません。角度に基づいて座標を調べていますか? この場合、Pi の精度はまったく問題になりません。重要なのはルックアップ テーブルのサイズであり、もちろん可能な限り最高の精度で事前に計算します。データ型を single から double に変更することを考えている場合を除いて、精度をさらに上げても追加の実行時間がかかることはありません。
値を事前に計算している場合は、可能な限り正確に保存できますが、実際に必要な正確さを実感するには、数式と他のコンポーネントの精度を調べて、その精度を確認する必要があります。 pi は、他のコンポーネントのそれと一致します。数値解析により、多くの手がかりが得られます。
円周率の新しい式
Pi=2.m.sin(90/m)
Pi=3.m.sin(60/m)
Pi=4.m.sin(45/m)
Pi=5.m.sin(36/m)
数百万の PI 無料電卓 XP、XM、….. の価値がある電卓の成功には、m=1.0E+10000000 をお勧めします。netframework2.0 をインストールする必要があります。
聖書によると、Pi の値は 3 です (リンク)。もちろん、それを使用する必要があります:)