トップページ > 過去ログ > 記事閲覧
シューティングゲームの円軌道の弾
名前:通りすがり 日時: 2008/03/11 00:54

よくシューティングゲームで敵キャラが使う円軌道を描く 弾を発生させたいのですが、 float X,Y;//回転中心の座標 float CX,CY;//弾の座標 float R;//半径 float i;//角度 float Sin(float); float Cos(float); X=Cx+R*Cos(i); Y=Cy+R*Sin(i); とした場合のSin()とCos()の中の計算は どのようになるのでしょうか? 宜しくお願いします

Page: 1 |

Re: シューティングゲームの円軌道の弾 ( No.1 )
名前:憂煉 日時:2008/03/11 02:40

えーと、math.hヘッダのsin関数とcos関数が遅すぎてやってられないという事でしょうか…? bccの環境ではmath.hの代わりにfastmath.hをインクルードすると幸せになれます。VC++には存在しませんがw fastmathはエラーチェック(0除算等)もすっぽかすので、気をつけてください。 それと、近似計算はやめておいたほうがいいです。最近のCPUにはFPUが標準搭載されているので下手に近似計算するより標準ライブラリに任せたほうが速いと思います。 がんばってインラインアセンブラでガリガリとx87系の命令を呼ぶというのはアリかと思います。以下を参考にしてください。 double rad=M_PI; double s,c; __asm{ fld rad;FPUのスタックにradをプッシュ fsincos;演算命令 fstp c;FPUのスタックから結果をポップ。cos(rad)が出てくる。 fstp s;もう一度ポップ。sin(rad)が出てくる }
Re: シューティングゲームの円軌道の弾 ( No.2 )
名前:通りすがり 日時:2008/03/11 11:47

憂煉さんレスありがとうございます。 すみません、開発環境はVC++なんです。 書き込み忘れ申し訳ありません。
Re: シューティングゲームの円軌道の弾 ( No.3 )
名前:優柔不断 日時:2008/03/11 20:28

Sinのマクローリン展開はこんな感じですかね。 SUM(n:0〜∞)((-1)^n/(2n+1)!)*(x^(2n+1)) ^は累乗記号です。というよりC言語ではありません。どちらかというと数学記号に合わせました。 !は階乗記号です。

Page: 1 |