2026:03:08
文書の過去の版を表示しています。
3/8日記
プログラム
- 弾を吐かせる。
- 画像回転はソフトウェア的には計算量が多いので、事前に画像を作ってそのとき必要な要素を計算用テーブルに情報載せて動かしてみた。意外と楽に作れた。
- ただ、画像に沿わない角度で弾を飛ばしたいときに違和感があるかもなと思った。
- その時は球状の弾を用いる等違和感はなくしていくことはできそう。
- あとは、狙い弾の処理について考えてた。
- 前提として、STGの敵弾もしくはプレイヤー弾を飛ばすのに利用したい。
- まず狙い弾は特に何も考えないならArctanを利用して角度を求める必要がある。
- Arctanについて、式としては「tan(y) = x」となるyを求める。
- そのためにArctanで角度を求める必要がある。ただ、毎回Arctanを求める以外の方法はないだろうかと考える。
- 特に今回は画像に制約があるため、出力結果からどの角度を参照するかを出力する必要がある。
- 方法としては、領域を4個に分けて、それぞれでtanの値をテーブルで持たせて、それを比較して近似値を取る形でいい気がした。
- ただ、これだとtanの計算からX・Y座標を求められてしまうので、ここからnormalizeで斜辺の長さも求める必要がある。
- normalizeは平方根で求める必要があるが、それ以外に手で計算する方法としては、開平法というものがあるらしい。
- これをつかえばFPUがない環境でも高速に解を求められるっぽい。
- こういうのを作る選択肢もある。
- 今のところは以下のどちらかかなあ。
- Arctanで角度を求めて各テーブルと比較し、一番差分が小さいグラフィックを採用する。(これはやりやすい)
- tan関数を求めて弾テーブルからtanの値を比較、飛ぶ方向はnormalizeを求めてXY方向に分解。
- arctanテーブルを作成、4象限のどれかを事前に検知してテーブルを展開、XY方向のベクトルを定義する。
- グラフィックはソフトウェアレンダリングで昔風だけど、計算まで昔風にやりたいわけではない。
- 今のCPUだったら今なりのやり方が存在するわけで、その選択肢は常に用意していくのがいいかなと。
- 実際上記の計算は角度を計算テーブルに突っ込んで、出力はXY成分ごとにsin/cosの計算してる。
- グラフィックについては元々ゲーム開発で使う想定はなかったけど、割と高速に動くのを確認したので、それだったら使ってみようじゃねえかという考え。
2026/03/08.1772998032.txt.gz · 最終更新: 2026/03/09 04:27 by machiaworx