14歳からはじめる C言語わくわく〜をはじめたものなのですが、2点から角度を割り出す方法がわからなくて困っています。 2点 (X,Y) (X',Y')→(0,100) (100,0)が(X,Y)からみて(X',Y')が 45度にあるのですが、これを数値であらわすのには、どうすればよいのでしょうか・・・ 宜しくお願いします。
atan2f((float)(Y'-Y),(float)(X'-X)) で出せませんか?
未定義の関数 'atan2f' を呼び出した と出てしまいます。 #include <math.h> はしてありますが...
atan2fではなくatan2だと思いますよ?
つかっているのがCかC++によって 異なると思います。 C++ではオーバーロードが使えるので、 atan2fとしなくてもatan2という関数で 引数の型を変えて定義するだけでよいので。 VCではCとしてコンパイルするかソースファイルの 拡張子がC以外はC++として扱われます。
環境ですが、おそらく「C」です (not C++) そもそも、初めてのことなので購入した本に付属してるものしか使用していません。 atan2にしてみましたところ、エラー(?)は消えましたが、結果が0.******〜みたいな数値になってしまい、私には角度として認識できませんでした。
ラジアン表記を角度に直したいなら、#define PI 3.14159とか定義して、 0.****に180を掛けて、PIで割ればよいです。 ただ、その角度をcos()やsin()で扱って、スプライトの座標移動などに 使いたいならば、角度に戻さずにそのまま使うのがベストです。 例えばcos(90)としてもcos90°は得られません。 cos(90*PI/180)でcos90°が得られます。 今回の例でいうなら、cos(0.*****)で、その角度のcos値が出せます。 sinだってtanだってなんだってこのやり方です。
無事得たい数値が出せました。 ありがとうございました