円周上の座標

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
シラフ

円周上の座標

#1

投稿記事 by シラフ » 14年前

剣で攻撃する動作をDrawRotaGraphで作り、あたり判定をつけたいのですが、
いい座標の求め方はないでしょうか。
宜しくお願いします。 画像

うしお

Re:円周上の座標

#2

投稿記事 by うしお » 14年前

剣の回転軸の座標を仮に(0,0)とし、
剣先の座標を(10,0)だとします

ーーー>
こんな剣の画像があったとして、

スクリーン座標で、
たとえば剣を時計回りにθ度回転させた後の剣先の座標は、
(10 * cosθ,10 * sinθ)となります

これでやってみてはいかがでしょうか? 画像

Tatu

Re:円周上の座標

#3

投稿記事 by Tatu » 14年前

剣の描画について

剣のどこか一点を中心に回転させるのであれば
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:円周上の座標

#4

投稿記事 by シラフ » 14年前

ということは

中心が(x,y)の場合
(x+10 * cosθ,y+10 * sinθ)
になるということですか。
画像

うしお

Re:円周上の座標

#5

投稿記事 by うしお » 14年前

はい、実際に試したり、
手で計算してみるとより分かるかと思います

シラフ

Re:円周上の座標

#6

投稿記事 by シラフ » 14年前

sinとcosはどうやって求めるんですか。

うしお

Re:円周上の座標

#7

投稿記事 by うしお » 14年前

math.hをインクルードすることで使えるようになります

sin
http://msdn.microsoft.com/ja-jp/library ... 80%29.aspx
cos
http://msdn.microsoft.com/ja-jp/library ... 80%29.aspx

シラフ

Re:円周上の座標

#8

投稿記事 by シラフ » 14年前

Cの勉強用にゲームを作っているのですが、Cでもできますか。

うしお

Re:円周上の座標

#9

投稿記事 by うしお » 14年前

出来る、出来ないで言えば当然できます
しかしこの質問は、

「手元に絵の具があります、これで風景画を描けますか?」
のような質問です

プログラミング言語はあくまで道具です
それを使ってゲームを作るのか、
画像処理のツールを作るのか、
数値計算に使うのか、
それはプログラムを組む人にゆだねられます

その上でゲームを作ることを選択するのも、とても楽しいことではないでしょうか

シラフ

Re:円周上の座標

#10

投稿記事 by シラフ » 14年前

前の質問は、教えてもらったページに// C++ onlyと書いてあるところがあって、
使用例をためそうとしてもエラーになってしまったので、
Cでも使えるかどうかという意味です。
Visual C++ 2008です。

画像

うしお

Re:円周上の座標

#11

投稿記事 by うしお » 14年前

これは失礼しました(どおりで脈絡のないコメントだと思いました

math.hはC時代から使えるものです 画像

Dixq (管理人)

Re:円周上の座標

#12

投稿記事 by Dixq (管理人) » 14年前

最近sin,cosの使い方について動画を作ったのでよければどうぞ。あまり参考になる物ではないかもしれませんが^^;
[nico]http://www.nicovideo.jp/watch/sm12492903[/nico]

シラフ

Re:円周上の座標

#13

投稿記事 by シラフ » 14年前

1>C:\Users\~~\~~\DxLib_VC\サンプルプログラム実行用フォルダ\Debug\DxLib_VC2008用.exe : fatal error LNK1120: 外部参照 1 が未解決です。


1>LIBCMTD.lib(wincrt0.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。



と出てしまうのですが、
どうすればいいでしょうか。

うしお

Re:円周上の座標

#14

投稿記事 by うしお » 14年前

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:円周上の座標

#15

投稿記事 by シラフ » 14年前

ありがとうございます。
エラーがなくなりました。
何度もすいませんが、
http://msdn.microsoft.com/ja-jp/library ... 80%29.aspx 
はどんな時のsinをもとめているんですか。

みけCAT

Re:円周上の座標

#16

投稿記事 by みけCAT » 14年前

ページの下の方にある「使用例」のことですか?
そうでしたら、pi/2ラジアン、すなわち90度の三角関数を求めています。

この答えでいいのでしょうか?
-----
no.64583
>前の質問は、教えてもらったページに// C++ onlyと書いてあるところがあって
このC++ onlyというのは、同じ名前で複数の関数を定義する
C++だけの機能「オーバーライド」を使っているため、C言語にはこの関数は定義されていない
(一つ目の関数しかない)ということだと思います。
「使用例」も自分の環境では正常にコンパイル・実行できました。
Dev-C++4.9.9.2、コンパイラはデフォルトです。

誤字を修正しました。 画像

シラフ

Re:円周上の座標

#17

投稿記事 by シラフ » 14年前

有難うございました。
解決しました。
とても分かりやすかったです。 画像

閉鎖

“C言語何でも質問掲示板” へ戻る