Hatena::Groupfatalemployeetraining

資材部の懲りない面々・あれこれブログ

「間違った社員教育」製品版委託頒布中!

2010-10-16

現状で学習に役立つもの(再掲含む)

最近になって検索で探したり教えてもらったりしただけなので、どこかに情報が埋もれている可能性は大。

11/29追記:

  • SphereLib
    • EFFY開発時の副産物な、汎用ライブラリ。あると便利な定数・関数がいっぱーい。ミッション作り始めるときには、いいから黙ってsystem.incやmission.incと一緒に入れておくんやで。絶対役に立つ。ただし、get_rot系を使って取得する角度の値域の説明には注意。私家版mission系関数マニュアルのほうが正しい。…てか値域0~360degなのは一般には使いづらいす…-180~180degに変換するのは個人的には仕事で慣れてますけどね!

備忘録

plcファイル中での座標の話。

トライアンドエラーで推測される話なんだけど、方位角(rotの2番目の数値)は、機体進行方向(機体相対座標系z軸)の絶対座標系z軸に対する角度[deg]の模様。

なので、この方位角をr_y[rad]としたとき機体進行方向をxz方面に投影した単位ベクトル\bf{e}=(e_x,e_y,e_z)^T

\left(\begin{array}{c}e_x\\e_y\\e_z\end{array}\right)=\left(\begin{array}{c}\rm{sin} r_y\\0\\\rm{cos} r_y\end{array}\right)

となる。

これを利用すれば、自機座標\bf{p}=(p_x,p_y,p_z)^Tを中心に、自機進行方向に対してy軸(鉛直軸)反時計回りに角度\theta[rad]の方向、距離lだけ離れている座標\bf{c}=(c_x,c_y,c_z)^T

\left(\begin{array}{c}c_x\\c_y\\c_z\end{array}\right)=\left(\begin{array}{c}p_x\\p_y\\p_z\end{array}\right)+l\left(\begin{array}{ccc}\rm{cos}\theta&0&-\rm{sin}\theta\\0&0&0\\\rm{sin}\theta&0&\rm{cos}\theta\end{array}\right)\left(\begin{array}{c}e_x\\e_y\\e_z\end{array}\right)

でもとまる。

あらかじめ計算してplcファイルに書き込めば、イベントでのカメラ役のNULL Objを正確に自機周囲に配置できるという寸法よ…

ちなみにdeg→radの単位換算は、deg値を180.0[deg]で割って\piかけるだけの簡単なお仕事。

エクセルとかでやればわりと楽ちん。

sptファイル中で計算して動的にやろうと思ったら、get_pos,get_rot,moveのどれが悪かったのかわからんがうまく動かなかったorz

#???追試中