こんにちは。
STGゲームを作っています。
正面方向(90度)に弾を打つ際に、
x = 移動量( 現在1.0f ) * cosf( 90.0f * (3.141592654f / 180.0f ) );
y = 移動量( 現在1.0f ) * sinf( 90.0f * (3.141592654f / 180.0f ) );
で計算したところ、
x = -4.3711388e-008; ← 0 になるはずでは??
y = 1.0;
となっていました。
私の考えでは、x=0になるはずなのですが、このような結果になってしまいました。
なぜこのような値になってしまったのでしょうか?
三角関数での角度の求め方
Re: 三角関数での角度の求め方
本来は無限小数であるはずの円周率の値を有限の桁数で切っていることも
少しは関係していそうな気がします。
まあ、「ほとんど0」とみなせる場合は「強制的に0にする」という手もあるかなと思います。
10^(-8)
なんて、ゲームの世界ではほとんど意識しなくていいでしょう。
少しは関係していそうな気がします。
まあ、「ほとんど0」とみなせる場合は「強制的に0にする」という手もあるかなと思います。
10^(-8)
なんて、ゲームの世界ではほとんど意識しなくていいでしょう。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 三角関数での角度の求め方
>私の考えでは、x=0になるはずなのですが、このような結果になってしまいました。
>なぜこのような値になってしまったのでしょうか?
なぜ、X=0になると思ったのか?
多分、電卓(10進数演算)の結果だったりしませんか?
コンピュータでは、計算方法が多数あります、
古の可変語長計算機
現代的浮動小数点計算
IEEEにある、浮動小数点演算
固定小数点演算
10進数演算
’
簡単なところで、固定少数点演算、正のみ
4bytes、整数2bytes、小数部2bytes
整数値は、0~65535
小数値は、1/65536
で表されます。
で、この範囲に収まらない値は、どちらかに補正されます、
どの様に補正するかは、実装によります。
>なぜこのような値になってしまったのでしょうか?
なぜ、X=0になると思ったのか?
多分、電卓(10進数演算)の結果だったりしませんか?
コンピュータでは、計算方法が多数あります、
古の可変語長計算機
現代的浮動小数点計算
IEEEにある、浮動小数点演算
固定小数点演算
10進数演算
’
簡単なところで、固定少数点演算、正のみ
4bytes、整数2bytes、小数部2bytes
整数値は、0~65535
小数値は、1/65536
で表されます。
で、この範囲に収まらない値は、どちらかに補正されます、
どの様に補正するかは、実装によります。