3次元剛体の運動方程式の立て方1_ベクトル定義

# どうもこんにちは
一般に，剛体の運動方程式は2次元平面のみで習うことが多いのではないでしょうか．重心座標$x$,重心中心回転角$\theta$を変数に，こんな式です

```math
\begin{eqnarray}
m \ddot x  &=& F\\
I \ddot \theta &=& N\\
\end{eqnarray}
```
上の式はニュートンの運動方程式で，下の式は回転のオイラーの運動方程式です．

これを3次元に持ってくると，実現象を表現するには不十分です．この式では，ジャイロ効果の項が足りていません．
次の式になります．

```math
\begin{eqnarray}
m \ddot x  &=& F\\
I \ddot \theta + cross(\dot \theta) I \dot \theta &=& N
\end{eqnarray}
```

ここで$cross(\dot \theta)$は外積行列へ変形することを意味しています．

```math
\begin{eqnarray}
  v &=& \left(
    \begin{array}{ccc}
      a\\
b\\
 c\\
    \end{array}
  \right)\\

cross(v) &=&  \left(
    \begin{array}{ccc}
     0&-c&b\\
c&0&-a\\
-b&a&0\\
    \end{array}
  \right)
  \end{eqnarray}
```
という変形です．実際，「ベクトル同士の外積」と「ベクトルの外積行列　×　ベクトル」が同じ結果になります．というより，なるように作られた行列です．

と，一見して何を言っているのか，わからないと思いますが，一から丁寧に説明してみようと思います．

# 座標系について
運動方程式を立てる際の一番の難しいところは座標系です．
以下では，二つの座標系しか登場させません．

1. 絶対座標系$O$ : 神視点・動かない座標系
2. 慣性座標系$A$ : 対象物視点

例
・ジェットコースターで乗っている人の重心を原点とし，目の前をx方向などとした慣性座標系

すべて，絶対座標系で立てればええやんと最初は思うかもしれません，しかし，定ベクトル（成分が一定）は基本的に慣性座標系で記述した際です．

例
上の例では，「乗っている人の重心から目へのベクトル」は乗っている人の座標系では定ベクトルですが，絶対座標系では「乗っている人の位置・姿勢」によって変動してしまいます．

# 代数ベクトル
ある座標系から見た代数ベクトルを，別の座標系から見ると，同じ幾何ベクトルですが，x,y,z成分が変わります．座標系によって，x,y,zの方向が異なるためです．
こんがらがるのを防止するために，代数ベクトルの右上に，そのベクトルの表現座標系を常時記述します．

例

```math
v^A
```
は座標系$A$で表現した代数ベクトル$v$です．

ここでベクトルの名称についてですが

* 幾何ベクトル:図・矢印，数値ではないため，どの座標系で見ているかは関係ない
* 代数ベクトル:成分が数値のベクトル，どの座標系で表したかで数値が異なる
* 変換ベクトル:幾何ベクトルを成分とする代数ベクトル

という使い分けをします．変換ベクトルについては，この後説明します．

# 座標変換行列
ある座標系での，その代数ベクトルがわかっているとき，別の座標系に変換する行列を定義できます．この行列を座標変換行列といいます．

座標系Aから座標系Oへの変換行列を$C_{OA}$と表すことにします．

```math
v^O = C_{OA} v^A
```
この行列は，3次元で考えれば3*3の行列で座標系$O,A$に対し一意に定まります．

$C_{OA}$を移項し

```math
v^A = C_{OA}^{-1} v^O
```
であるため，

```math
C_{AO} =  C_{OA}^{-1}
```
と言えます．実は

```math
 C_{OA}^{-1} = C_{OA}^T
```
という関係があります．

### 証明
新しく，ベクトルを成分に持つ，**これまでとは違う,次の変換ベクトルを定義します**．これまでベクトルといえば，成分は数値でした．
変換ペクトルは幾何ベクトルを成分にする，代数ベクトルです．

```math
e_A = \left(
    \begin{array}{ccc}
      \vec e_{AX}\\
\vec e_{AY}\\
\vec e_{AZ}\\
    \end{array}
  \right)\\
```
$\vec e_{AX}$は座標系$A$の$x$方向の単位幾何ベクトルです．ここでベクトルの名称についてですが

* 幾何ベクトル:図・矢印，数値ではないため，どの座標系で見ているかは関係ない
* 代数ベクトル:数値，どの座標系で表したかで数値が異なる
* 変換ベクトル:上で作った，幾何ベクトルを成分とするベクトル

という使い分けがあります．

ここで，幾何ベクトル$\vec r$と変換ベクトルの内積を行います．

```math
e_A \cdot \vec r = 
\left(
    \begin{array}{ccc}
      \vec e_{AX} \cdot \vec r\\
\vec e_{AY} \cdot \vec r\\
\vec e_{AZ} \cdot \vec r\\
    \end{array}
  \right)\\
=
\left(
    \begin{array}{ccc}
      rベクトルを座標系Aで表現した時のx成分\\
rベクトルを座標系Aで表現した時のy成分\\
rベクトルを座標系Aで表現した時のz成分\\
    \end{array}
  \right)\\
=r^{A}
```
つまり，**"幾何ベクトルを代数ベクトルへの変換を行う，変換ベクトル$e_A$"** が定義できました．

$C_{OA}$は,$e_{AX}^O$を座標系$A$の$x$方向単位幾何ベクトルを$O$座標系で表した代数ベクトルとすると

```math
C_{OA} = [e_{AX}^O , e_{AY}^O , e_{AZ}^O]
```
と書けます．例えば，単位代数ベクトルを掛けると

```math
C_{OA} \left(
\begin{array}{ccc}
1\\
0\\
0\\
\end{array}
  \right)
=e_{AX}^O 
```
であることから，確認できます（A座標系でのx方向単位代数ベクトルを掛けると，O座標系で表現されたものになる）．

ここで，$e_{AX}^O$は変換ベクトルを用いることで

```math
e_{AX}^O = e_O \cdot \vec e_{AX}
```
と書けます．よって

```math
\begin{eqnarray}
C_{OA} &=& [ e_O \cdot \vec e_{AX} ,  e_O \cdot \vec e_{AY}, e_O \cdot \vec e_{AZ}]\\
&=& e_O \cdot
\left(
\begin{array}{ccc}
\vec e_{AX} \\
\vec e_{AY} \\
\vec e_{AZ} \\
\end{array}
  \right)^T\\
&=& e_O \cdot e_A^T
\end{eqnarray}
```
と変換ベクトル同士の内積で書けます．

$C_{AO}$についても同様の考えを適用すると

```math
C_{AO}=e_A \cdot e_O^T
```
と書けます．転置を適用すると

```math
\begin{eqnarray}
C_{AO}^T &=&(e_A \cdot e_O^T)^T\\
&=& e_O \cdot e_A^T\\
&=& C_{OA}
\end{eqnarray}
```
さらに，

```math
C_{AO} =  C_{OA}^{-1}
```
と合わせて

```math
 C_{OA}^{-1}= C_{OA}^T
```
が証明されました．

### 追加で必要な知識
座標変換行列は代数ベクトルだけでなく，変換ベクトルについても同様に適用できます．

```math
e_O = C_{OA} e_A
```
なんとなく，正しいぐらいの理解で，私は証明できません．
しかし，

```math
\left(
\begin{array}{ccc}
\vec e_{OX} \\
\vec e_{OY} \\
\vec e_{OZ} \\
\end{array}
  \right) = C_{OA} 
\left(
\begin{array}{ccc}
\vec e_{AX} \\
\vec e_{AY} \\
\vec e_{AZ} \\
\end{array}
  \right)
```
こう書くとなんとなく正しく感じませんか（テキトウですね）

# 外積オペレータと座標変換行列
外積オペレータ$cross(v)$は外積行列へ変形することを意味しています．

```math
\begin{eqnarray}
  v &=& \left(
    \begin{array}{ccc}
      a\\
b\\
 c\\
    \end{array}
  \right)\\

cross(v) &=&  \left(
    \begin{array}{ccc}
     0&-c&b\\
c&0&-a\\
-b&a&0\\
    \end{array}
  \right)
  \end{eqnarray}
```
という変形です．

ここで，座標変換行列をかけたベクトルに対して，外積オペレータを適用させてみましょう．

```math
cross(C_{OA} v^A)
= C_{OA} cross(v^A) C_{OA}^T
```

また，左辺を変形し

```math
cross(v^O)
=C_{OA} cross(v^A) C_{OA}^T
```
とも言えます．

### 証明
先ほどの変換ベクトル同士の計算を確認します．

```math
e_A \cdot e_A^T  = 
\left(
    \begin{array}{ccc}
      \vec e_{AX}\cdot\vec e_{AX} &\vec e_{AX}\cdot\vec e_{AY} &\vec e_{AX}\cdot\vec e_{AZ} \\
\vec e_{AY}\cdot\vec e_{AX}&\vec e_{AY}\cdot\vec e_{AY}&  \vec e_{AY}\cdot\vec e_{AZ}\\
\vec e_{AZ}\cdot\vec e_{AX}& \vec e_{AZ}\cdot\vec e_{AY}& \vec e_{AZ}\cdot\vec e_{AZ}\\
    \end{array}
  \right)\\
=\left(
    \begin{array}{ccc}
      1&0&0\\
0&1&0\\
0&0&1\\
    \end{array}
  \right)\\
```
あくまで，行列としての積の仕方をしながら，成分の演算は「$\cdot$内積」として計算しています．

同様に「$\times $外積」で行うと

```math
\begin{eqnarray}
e_A \times e_A^T  &=& 
\left(
    \begin{array}{ccc}
      \vec e_{AX}\times\vec e_{AX} &\vec e_{AX}\times\vec e_{AY} &\vec e_{AX}\times\vec e_{AZ} \\
\vec e_{AY}\times\vec e_{AX}&\vec e_{AY}\times\vec e_{AY}&  \vec e_{AY}\times\vec e_{AZ}\\
\vec e_{AZ}\times\vec e_{AX}& \vec e_{AZ}\times\vec e_{AY}& \vec e_{AZ}\times\vec e_{AZ}\\
    \end{array}
  \right)\\
&=&\left(
    \begin{array}{ccc}
      0&\vec e_{AZ}&-\vec e_{AY}\\
-\vec e_{AZ}&0&\vec e_{AX}\\
\vec e_{AY}&- \vec e_{AX}&0\\
    \end{array}
  \right)\\
&=& -cross(e_A)
\end{eqnarray}
```
という関係があります．

さらに，

```math
e_O = C_{OA} e_A
```
を外積の関係に代入すると，

```math
\begin{eqnarray}
cross(e_O) &=&- e_O \times e_O ^T \\
&=& - C_{OA} e_A \times (C_{OA} e_A )^T\\
&=&C_{OA} ( -e_A \times e_A ^T ) C_{OA}^T\\
&=&C_{OA} cross(e_A) C_{OA}^T
\end{eqnarray}
```
2行目から3行目で積の優先順位を変えています．外積では成立しないように思うかもしれませんが，外積はあくまで成分同士の計算で，行列の積として考えられるため，積の優先順位を変えることができます（結合法則が成立しているともいえる．）．

証明を行っていきます．

```math
\begin{eqnarray}
cross(v^O) &=& cross(e_O \cdot \vec v)\\
&=&cross(e_O) \cdot \vec v\\
&=&C_{OA} cross(e_A) C_{OA}^T　\cdot \vec v\\
&=&C_{OA} cross(e_A \cdot \vec v) C_{OA}^T　\\
&=&C_{OA} cross(v^A) C_{OA}^T
\end{eqnarray}
```
証明できました．2行目，5行目では$\vec v$を「積の順序・外積オペレータ内外への移動」を行っていますが，これは$\vec v$が定数のように扱えるためです．

ここで重要なことは，**外積オペレータを付与したベクトルを座標変換すると，座標変換行列に挟まれた形になる**ことです．


以上の基礎を踏まえ，次に角速度・速度・位置の運動学的関係をまとめます．

https://qiita.com/hiRina/items/8f03bccbe9aff6423674