ページ 1 / 1
円周上の座標
Posted: 2010年10月30日(土) 21:44
by シラフ
剣で攻撃する動作をDrawRotaGraphで作り、あたり判定をつけたいのですが、
いい座標の求め方はないでしょうか。
宜しくお願いします。

Re:円周上の座標
Posted: 2010年10月31日(日) 02:48
by うしお
剣の回転軸の座標を仮に(0,0)とし、
剣先の座標を(10,0)だとします
ーーー>
こんな剣の画像があったとして、
スクリーン座標で、
たとえば剣を時計回りにθ度回転させた後の剣先の座標は、
(10 * cosθ,10 * sinθ)となります
これでやってみてはいかがでしょうか?

Re:円周上の座標
Posted: 2010年10月31日(日) 12:58
by Tatu
剣の描画について
剣のどこか一点を中心に回転させるのであれば
int DrawRotaGraph2(int x,int y,int cx,int cy,double ExRate,double Angle.
int GrHandle,int TransFlag,int TurnFlag = 0)
または
DrawRotaGraph2F
を使ってみるのはどうでしょうか?
x,yは回転中心の座標。
cx,cyは画像のどの部分を回転中心にするか。
以降はDrawRotaGraphの引数に同じ。
Re:円周上の座標
Posted: 2010年10月31日(日) 22:04
by シラフ
ということは
中心が(x,y)の場合
(x+10 * cosθ,y+10 * sinθ)
になるということですか。

Re:円周上の座標
Posted: 2010年11月01日(月) 12:10
by うしお
はい、実際に試したり、
手で計算してみるとより分かるかと思います
Re:円周上の座標
Posted: 2010年11月01日(月) 17:49
by シラフ
sinとcosはどうやって求めるんですか。
Re:円周上の座標
Posted: 2010年11月01日(月) 20:18
by うしお
Re:円周上の座標
Posted: 2010年11月02日(火) 14:14
by シラフ
Cの勉強用にゲームを作っているのですが、Cでもできますか。
Re:円周上の座標
Posted: 2010年11月02日(火) 16:41
by うしお
出来る、出来ないで言えば当然できます
しかしこの質問は、
「手元に絵の具があります、これで風景画を描けますか?」
のような質問です
プログラミング言語はあくまで道具です
それを使ってゲームを作るのか、
画像処理のツールを作るのか、
数値計算に使うのか、
それはプログラムを組む人にゆだねられます
その上でゲームを作ることを選択するのも、とても楽しいことではないでしょうか
Re:円周上の座標
Posted: 2010年11月03日(水) 00:01
by シラフ
前の質問は、教えてもらったページに// C++ onlyと書いてあるところがあって、
使用例をためそうとしてもエラーになってしまったので、
Cでも使えるかどうかという意味です。
Visual C++ 2008です。

Re:円周上の座標
Posted: 2010年11月03日(水) 00:14
by うしお
これは失礼しました(どおりで脈絡のないコメントだと思いました
math.hはC時代から使えるものです

Re:円周上の座標
Posted: 2010年11月03日(水) 04:34
by Dixq (管理人)
最近sin,cosの使い方について動画を作ったのでよければどうぞ。あまり参考になる物ではないかもしれませんが^^;
[nico]http://www.nicovideo.jp/watch/sm12492903[/nico]
Re:円周上の座標
Posted: 2010年11月03日(水) 16:23
by シラフ
1>C:\Users\~~\~~\DxLib_VC\サンプルプログラム実行用フォルダ\Debug\DxLib_VC2008用.exe : fatal error LNK1120: 外部参照 1 が未解決です。
1>LIBCMTD.lib(wincrt0.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
と出てしまうのですが、
どうすればいいでしょうか。
Re:円周上の座標
Posted: 2010年11月03日(水) 17:56
by うしお
win32アプリケーションの設定で
int mainと書いていたりしませんでしょうか?
リンカ→システム→サブシステム : Windows (/SUBSYSTEM:WINDOWS)
で
全般→文字セット : マルチ バイト文字セットを使用する
であれば、
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
のメイン関数を書く必要があります
もし、
全般→文字セット : Unicode 文字セットを使用する
であれば、
int WINAPI wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPWSTR lpCmdLine,
int nShowCmd
);
となります
プロジェクトの設定を見直してみてください
また、プロジェクトのクリーンも試してみてください
Re:円周上の座標
Posted: 2010年11月03日(水) 21:51
by シラフ
ありがとうございます。
エラーがなくなりました。
何度もすいませんが、
http://msdn.microsoft.com/ja-jp/library ... 80%29.aspx
はどんな時のsinをもとめているんですか。
Re:円周上の座標
Posted: 2010年11月03日(水) 22:11
by みけCAT
ページの下の方にある「使用例」のことですか?
そうでしたら、pi/2ラジアン、すなわち90度の三角関数を求めています。
この答えでいいのでしょうか?
-----
no.64583
>前の質問は、教えてもらったページに// C++ onlyと書いてあるところがあって
このC++ onlyというのは、同じ名前で複数の関数を定義する
C++だけの機能「オーバーライド」を使っているため、C言語にはこの関数は定義されていない
(一つ目の関数しかない)ということだと思います。
「使用例」も自分の環境では正常にコンパイル・実行できました。
Dev-C++4.9.9.2、コンパイラはデフォルトです。
誤字を修正しました。

Re:円周上の座標
Posted: 2010年11月05日(金) 15:48
by シラフ
有難うございました。
解決しました。
とても分かりやすかったです。
