ページ 11

自機と敵機の角度を取得するには

Posted: 2013年9月06日(金) 11:34
by milgy
度々お世話になっています、いつもありがとうございます。

さて、件名の通りなのですが、自機と敵機との角度をどのように計算すればいいのかがわかりません。
龍神録プログラミングの館の13章「敵にショットを撃たせてみよう」には

--- shot.cpp を以下のように記述 ---

#include "../include/GV.h"

//n番目のショットを登録した敵と自機との角度を返す
double shotatan2(int n){
return atan2(ch.y-enemy[shot[n].num].y,ch.x-enemy[shot[n].num].x);
}

と書いてあり(長いので該当部分のみ抜粋)、
自分の求めている仕事をする関数はdouble atan2(Y方向の自機と敵機の距離,X方向の自機と敵機の距離);だろうと思うのですが、
atan2という関数が見つからず、結局どのような計算をして角度を返しているのかわかりません。

atan2の中身か、自機と敵機との角度を計算するプログラムを教えてください。

自分はWINDOWS 8,DirectX,C言語を使用しています。

Re: 自機と敵機の角度を取得するには

Posted: 2013年9月06日(金) 12:20
by バグ
こちらが参考になるかもしれません。

http://otsuiti2.web.fc2.com/menu/sn/sankaku.htm

Re: 自機と敵機の角度を取得するには

Posted: 2013年9月06日(金) 12:23
by softya(ソフト屋)
atan2はC言語の標準ライブラリです。
「BohYoh.com【C言語講座】標準ライブラリ atan2」
http://www.bohyoh.com/CandCPP/C/Library/atan2.html

数学的な意味はバグさんの書かれたとおりです。アークタンジェント(逆tan)をベースにした関数です。

Re: 自機と敵機の角度を取得するには

Posted: 2013年9月06日(金) 12:34
by milgy
返答の順番が逆になってしまいますがごめんなさい。
>>softya様
atan2は標準ライブラリだったのですか!自分はatan2を自作の関数だと勘違いしていました。

>>バグ様
atan2の中身は三角関数(主にアークタンジェント)を利用しているのですね、そのあたりの数学は学習したのでわかりました!

返信ありがとうございます、math.hをインクルードしてatan2を利用してこうとおもいます!