〰️

3Dプログラミングにおける同次変換行列の捉え方についてのメモ(自分用)

2024/03/13に公開

いつもいつも忘れるのでメモに残す
自分用の逆引きリファレンスとしても使いたいので随時更新する予定

注意事項

筆者は数学に強い訳でもなく、この記事では結果から意味を帰納的に判断しているだけであるため、絶対に鵜呑みにしないでください
内容または考え方に誤りがある場合は教えてください

前提条件

本記事ではOpenGLのラッパーライブラリであるOpenTK(行優先)の同次変換行列を想定している
つまり列優先行列の場合、本記事の計算は全て左右逆に考えれば良いはず(未確認)

乗算の順序による違い

同次変換行列を右から掛けることの意味

同次変換行列M_1が同次変換行列M_2座標系内での姿勢を表しているものとする

M = M_1 M_2

MM_2の親座標系から見たM_1の姿勢と捉えることが出来る
3D制御において、ローカル→ワールド変換等に使用する最もポピュラーな変換の一つ

変換の流れ

  1. M_1の親座標系の原点を中心にM_2の回転成分の分だけM_1を回転
  2. M_1の親座標軸に沿ってM_2の並行移動成分の分だけM_1を移動

同次変換行列を左から掛ける

同次変換行列M_1は姿勢を、同次変換行列M_2はなんらかの変換を表しているものとする

M=M_2 M_1

変換の流れ

  1. M_1の座標軸に沿ってM_2の並行移動成分の分だけM_1を移動
  2. M_1の座標軸に沿ってM_2の回転成分の分だけM_1を回転

後のセクションで説明しているが、逆行列の場合この適用順が逆になるため注意が必要

同次変換行列の逆行列を右から掛けることの意味

同次変換行列M_1M_2がそれぞれ同一座標系内の姿勢を表しているものとする

M = M_1 M_2^{-1}

MM_2座標系から見たM_1の姿勢と捉えることが出来る
3D制御において、ワールド→ローカル変換等に使用する最もポピュラーな変換の一つ

同次変換行列の逆行列を左から掛ける

同次変換行列M_1は姿勢を、同次変換行列M_2はなんらかの変換を表しているものとする

M=M_2^{-1} M_1

変換の流れ

  1. M_1の座標軸に沿ってM_2の回転成分の分だけM_1を逆回転
  2. M_1の回転後の座標軸に沿ってM_2の並行移動成分の分だけM_1を逆に移動

Discussion