# 座標軸旋轉
## 旋轉方式
> 1. $v= a \times b$
其中ab為單位向量,則可推導出
$sin=|v|$ , since $|a{\times}b|=|a||b|sinθ$
$cos=a \cdot b$ , since ${|a||b|cosθ}={a \cdot b}$
> 2. 求旋轉矩陣$R=I+[v]_{\times}+ \frac{1−c}{s^2}[v]^2$
其中 I 為單位矩陣,$[v]_{\times}$為$[v]$的`反對稱矩陣`,定義為
$[v]_{\times} \stackrel{\rm def}{=}
\begin{bmatrix}
\,\,0 & \!-v_3 & \,\,\,v_2\\
\,\,\,v_3 & 0 & \!-v_1\\
\!-v_2 & \,\,v_1 &\,\,0
\end{bmatrix}$
## 套用感測器數值
==**第一步 將重力向量轉到[0,0,1]求旋轉矩陣**==
這裡的$g_x$、$g_y$、$g_z$為**傳感器數值除以$G(9.80665)$**
$a=\left[
\begin{array}{1}
0 \\ 0 \\ 1 \\
\end{array}
\right]$ , $b=\left[
\begin{array}{1}
g_x \\ g_y \\ g_z \\
\end{array}
\right]$ , $v= a \times b =\left[
\begin{array}{1}
-g_y \\ g_x \\ 0 \\
\end{array}
\right]$
則 $cos = g_z$,$sin=\sqrt{g_y^2+g_x^2}$
$[v]_{\times}=
\begin{bmatrix}
\ 0 & 0 & \ g_x\\
\ 0 & 0 & \ g_y\\
\ -g_x & \ -g_y &\ 0
\end{bmatrix}$
$[v]^2_{\times}=
\begin{bmatrix}
\ -g^2_x & -g_xg_y & \ 0\\
\ -g_xg_y & -g^2_y & \ 0\\
\ 0 & \ 0 &\ -g^2_x-g^2_y
\end{bmatrix}$
套用公式即可得到旋轉矩陣$R$
==**第二步 將線性加速度向量透過旋轉矩陣轉為結果**==
$Result {\times} R = A$ ,則 $Result = A {\times} R^{-1}$
invert用jama->Matrix類中的inverse()
:::info
Source
1 取得旋轉矩陣
https://math.stackexchange.com/questions/180418/calculate-rotation-matrix-to-align-vector-a-to-vector-b-in-3d
:::