1

ねえ、私はいくつかのグラフィック計算を行っており、フロートであると信じているものを関数に挿入し(フロートを事前に操作する方法が何らかの形で何かを台無しにしていると確信しています...)、奇妙で否定的な結果が返されます。

たとえば、Angleが最初に350.0に等しいときに次の操作を実行すると、テストは
-.99になります。なんで?

Angle= (float)(Angle-(int)Angle)+(float)((int)Angle%90); 

// calculates x and y based on angle and Hypotenuse
float test= sin(Angle);
float test2= 1/(Speed*Time);
float test3= test/test2;
buffX= sin(Angle)/ (1.f/(Speed*Time));
buffY= sin(Angle-90)/ (1.f/(Speed*Time));

すべてが機能しなくなる前に(float)を置いて、Angleをfloatに保とうとしています...助けてください!ありがとう!

4

2 に答える 2

4

これは、C /C++ランタイム関数sin()が度ではなくラジアンで引数を期待しているためです。

次のコマンドでラジアンに変換します。

float test= sin(Angle / 180 * M_PI);

于 2011-06-16T06:46:48.793 に答える
1

罪は度ではなくラジアンで引数を取ります。あなたはあなたの数を取り、それをpi/180で乗算する必要があります

于 2011-06-16T06:48:41.617 に答える