さらに3Dタートル
3Dタートルでの実験 - 檜山正幸のキマイラ飼育記 メモ編からの続き。
3DタートルのURL:
Terminalで status() と打つと、そのときの亀の状態(status)が表示される。亀のステータスは4本のベクトルとして表示される。
Positon vetorはその名のとおり位置ベクトルで、原点から亀(の体の中心位置)まで引かれたベクトルの成分表示。亀の座標と言っても同じ。
Heading vectorは、亀の背骨のベクトルだと思えばよい。尻尾から頭に向かう長さ1のベクトル。飛行機ではロール軸に対応する。その背骨ベクトルの成分表示がHeading vectorとして出る。
Normal vectorとPitch vectorも、飛行機とどう対応するかを考える(これは練習問題)。
Position vectorは亀の位置を決め、残り3本のベクトルは亀の姿勢を決める。最初、亀は原点にいるので、初期位置は原点、初期姿勢は「初期状態でstatusコマンド打つ」でわかる。Heading, Normal, Pitchベクトルは空間のx, y, z軸と平行になっている。より詳しい状況は自分で確認(これも問題)。
重要な注意:座標値/ベクトルの成分値は、浮動小数点数なので誤差がつきもの。数値のお尻がe-16の場合は極めて小さい数なのでゼロとみなしてよい。コンピュータの計算では誤差は避けようがない。
練習問題: 次の動作を繰り返す。
- 現在のステータスをstatusコマンドで見る。
- 適当なコマンドをひとつだけ入力。
- ステータスがどうなったかを予測する。細かい数値まで予測する必要はない。だいたいのところでよい。
- statusコマンドで予測があっていたかどうかを確認する。
練習問題: ベクトルの足し算を実感する問題。
以下の作業の途中で適宜statusコマンドで状態を確認すること。また、カメラ位置を変えて色々な視点で見る。
- 空間内の2点A, Bを適当に選ぶ。
- 原点からAに移動。このとき使ったコマンド列を[手順1]として記録しておく。
- 姿勢を初期姿勢に戻す。
- AからBに移動。このとき使ったコマンド列を[手順2]として記録しておく。
- 原点にジャンプして、姿勢を初期姿勢に戻す。
- [手順2]を実行する。
- 姿勢を初期姿勢に戻す。
- [手順1]を実行する。
- 描かれた経路を観察してみる。
- 原点にジャンプして、姿勢を初期姿勢に戻す。
- 原点からBに移動する。このとき使ったコマンド列を[手順3]として記録しておく。
- 描かれた経路を観察してみる。
- 別な点Cを選ぶ。
- Cにジャンプして、姿勢を初期姿勢に戻す。
- Cを基点にして(毎回Cにジャンプして戻るようにして)、[手順1], [手順2], [手順3]を実行してみて、描かれた経路を観察する。
上記のA, B, Cを色々変えて同じことをやってみる。
逆三角関数を使う必要がある。
赤が逆サイン、青が逆コサイン。
*1:記事URL: https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0 画像URL: https://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Flight_dynamics_with_text.png/220px-Flight_dynamics_with_text.png
*2:記事URL: https://ja.wikipedia.org/wiki/%E9%80%86%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0 画像URL: https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Arcsine_Arccosine.svg/168px-Arcsine_Arccosine.svg.png