トップページ > 過去ログ > 記事閲覧
2点から角度を求める
名前:E-N 日時: 2008/02/16 14:19

14歳からはじめる C言語わくわく〜をはじめたものなのですが、2点から角度を割り出す方法がわからなくて困っています。 2点 (X,Y) (X',Y')→(0,100) (100,0)が(X,Y)からみて(X',Y')が 45度にあるのですが、これを数値であらわすのには、どうすればよいのでしょうか・・・ 宜しくお願いします。

Page: 1 |

Re: 2点から角度を求める ( No.1 )
名前:dz 日時:2008/02/16 14:36

atan2f((float)(Y'-Y),(float)(X'-X)) で出せませんか?
Re: 2点から角度を求める ( No.2 )
名前:E-N 日時:2008/02/16 20:28

未定義の関数 'atan2f' を呼び出した と出てしまいます。 #include <math.h> はしてありますが...
Re: 2点から角度を求める ( No.3 )
名前:憂煉 日時:2008/02/17 00:21

atan2fではなくatan2だと思いますよ?
Re: 2点から角度を求める ( No.4 )
名前: 日時:2008/02/17 02:45

つかっているのがCかC++によって 異なると思います。 C++ではオーバーロードが使えるので、 atan2fとしなくてもatan2という関数で 引数の型を変えて定義するだけでよいので。 VCではCとしてコンパイルするかソースファイルの 拡張子がC以外はC++として扱われます。
Re: 2点から角度を求める ( No.5 )
名前:E-N 日時:2008/02/17 07:32

環境ですが、おそらく「C」です (not C++) そもそも、初めてのことなので購入した本に付属してるものしか使用していません。 atan2にしてみましたところ、エラー(?)は消えましたが、結果が0.******〜みたいな数値になってしまい、私には角度として認識できませんでした。
Re: 2点から角度を求める ( No.6 )
名前:tok 日時:2008/02/17 08:11

ラジアン表記を角度に直したいなら、#define PI 3.14159とか定義して、 0.****に180を掛けて、PIで割ればよいです。 ただ、その角度をcos()やsin()で扱って、スプライトの座標移動などに 使いたいならば、角度に戻さずにそのまま使うのがベストです。 例えばcos(90)としてもcos90°は得られません。 cos(90*PI/180)でcos90°が得られます。 今回の例でいうなら、cos(0.*****)で、その角度のcos値が出せます。 sinだってtanだってなんだってこのやり方です。
Re: 2点から角度を求める ( No.7 )
名前:E-N 日時:2008/02/17 20:34

無事得たい数値が出せました。 ありがとうございました

Page: 1 |