このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

さらに3Dタートル

3Dタートルでの実験 - 檜山正幸のキマイラ飼育記 メモ編からの続き。

3DタートルのURL:

Terminalで status() と打つと、そのときの亀の状態(status)が表示される。亀のステータスは4本のベクトルとして表示される。

  1. Position vector
  2. Heading vector
  3. Normal vector
  4. Pitch vector

Positon vetorはその名のとおり位置ベクトルで、原点から亀(の体の中心位置)まで引かれたベクトルの成分表示。亀の座標と言っても同じ。

Heading vectorは、亀の背骨のベクトルだと思えばよい。尻尾から頭に向かう長さ1のベクトル。飛行機ではロール軸に対応する。その背骨ベクトルの成分表示がHeading vectorとして出る。

*1

Normal vectorとPitch vectorも、飛行機とどう対応するかを考える(これは練習問題)。

Position vectorは亀の位置を決め、残り3本のベクトルは亀の姿勢を決める。最初、亀は原点にいるので、初期位置は原点、初期姿勢は「初期状態でstatusコマンド打つ」でわかる。Heading, Normal, Pitchベクトルは空間のx, y, z軸と平行になっている。より詳しい状況は自分で確認(これも問題)。

重要な注意:座標値/ベクトルの成分値は、浮動小数点数なので誤差がつきもの。数値のお尻がe-16の場合は極めて小さい数なのでゼロとみなしてよい。コンピュータの計算では誤差は避けようがない。

練習問題: 次の動作を繰り返す。

  1. 現在のステータスをstatusコマンドで見る。
  2. 適当なコマンドをひとつだけ入力。
  3. ステータスがどうなったかを予測する。細かい数値まで予測する必要はない。だいたいのところでよい。
  4. statusコマンドで予測があっていたかどうかを確認する。

練習問題: ベクトルの足し算を実感する問題。

以下の作業の途中で適宜statusコマンドで状態を確認すること。また、カメラ位置を変えて色々な視点で見る。

  1. 空間内の2点A, Bを適当に選ぶ。
  2. 原点からAに移動。このとき使ったコマンド列を[手順1]として記録しておく。
  3. 姿勢を初期姿勢に戻す。
  4. AからBに移動。このとき使ったコマンド列を[手順2]として記録しておく。
  5. 原点にジャンプして、姿勢を初期姿勢に戻す。
  6. [手順2]を実行する。
  7. 姿勢を初期姿勢に戻す。
  8. [手順1]を実行する。
  9. 描かれた経路を観察してみる。
  10. 原点にジャンプして、姿勢を初期姿勢に戻す。
  11. 原点からBに移動する。このとき使ったコマンド列を[手順3]として記録しておく。
  12. 描かれた経路を観察してみる。
  13. 別な点Cを選ぶ。
  14. Cにジャンプして、姿勢を初期姿勢に戻す。
  15. Cを基点にして(毎回Cにジャンプして戻るようにして)、[手順1], [手順2], [手順3]を実行してみて、描かれた経路を観察する。

上記のA, B, Cを色々変えて同じことをやってみる。


三角関数を使う必要がある。

*2

赤が逆サイン、青が逆コサイン。