anchor.diff:  \end{align*}
   ++++
   
  -With this, we can actually directly write the form of the inverse of our matrix.
  +この式があれば、下記のように逆行列を直接書く事ができます：
   
   [stem]
   ++++
   M^{-1}=\left( \begin{matrix} \frac{1}{a}\vec{X} & \frac{1}{b}\vec{Y} & \frac{1}{c}\vec{Z} & \vec{0} \\ -\vec{T}\cdot\frac{1}{a}\vec{X} & -\vec{T}\cdot\frac{1}{b}\vec{Y} & -\vec{T}\cdot\frac{1}{c}\vec{Z} & 1 \\ \end{matrix} \right) = \left( \begin{matrix} \frac{1}{a}X_0 & \frac{1}{b}Y_0 & \frac{1}{c}Z_0 & 0 \\ \frac{1}{a}X_1 & \frac{1}{b}Y_1 & \frac{1}{c}Z_1 & 0 \\ \frac{1}{a}X_2 & \frac{1}{b}Y_2 & \frac{1}{c}Z_2 & 0 \\ -\vec{T}\cdot\frac{1}{a}\vec{X} & -\vec{T}\cdot\frac{1}{b}\vec{Y} & -\vec{T}\cdot\frac{1}{c}\vec{Z} & 1 \\ \end{matrix} \right)
   ++++
   
  -The nice thing about transform matrix stem:[M] is its first 3 rows are perpendicular to each other. Its inverse form is basically transpose the 3x3 rotation matrix, and rescale it, and change translation part by doing dot product with 3 rescaled axes. It should be easy to confirm stem:[MM^{-1}=I].
  -
  -Now let’s bake in the scale (so stem:[\left|\vec{X}\right|=a],stem:[\left|\vec{Y}\right|=b],stem:[\left|\vec{Z}\right|=c]) and get a more generic form.
  +トランスフォーム行列stem:[M]は最初の3行が互いに垂直という素晴らしい特性があります。元の３ｘ３回転小行列を転置し、逆スケール変換し、最後に位置のベクトルと逆スケール変換した軸の内積を計算すると逆行列が出来上がります。stem:[MM^{-1}=I]は簡単に確認できます。
  +
  +もしスケールを軸のベクトルに収めれば（つまりstem:[\left|\vec{X}\right|=a],stem:[\left|\vec{Y}\right|=b],stem:[\left|\vec{Z}\right|=c]）以下のように一般型になります。
   
   [stem]
   ++++
   M=\left( \begin{matrix} \vec{X} & 0 \\ \vec{Y} & 0 \\ \vec{Z} & 0 \\ \vec{T} & 1 \\ \end{matrix} \right), M^{-1}=\left( \begin{matrix} \frac{1}{{\left|\vec{X}\right|}^{2}}\vec{X} & \frac{1}{{\left|\vec{Y}\right|}^{2}}\vec{Y} & \frac{1}{{\left|\vec{Z}\right|}^{2}}\vec{Z} & \vec{0} \\ -\vec{T}\cdot\frac{1}{{\left|\vec{X}\right|}^{2}}\vec{X} & -\vec{T}\cdot\frac{1}{{\left|\vec{Y}\right|}^{2}}\vec{Y} & -\vec{T}\cdot\frac{1}{{\left|\vec{Z}\right|}^{2}}\vec{Z} & 1 \\ \end{matrix} \right)
   ++++
   
  -Notice that for rescaling, we divide by squared size of scaled axis, instead of size, which is good news for implementation. And if our transform is of unit scale, which is also common in games, our target becomes even simpler.
  +逆スケール変換の部分を注目してください。分母の方はスケールではなく、スケールの2乗になります。平方根を求めなくてもいいので、これは朗報です。もしスケールが全て１であれば、この式はよりシンプルな形になります。
   
   [stem]
   ++++
   M^{-1}=\left( \begin{matrix} \vec{X} & \vec{Y} & \vec{Z} & \vec{0} \\ -\vec{T}\cdot\vec{X} & -\vec{T}\cdot\vec{Y} & -\vec{T}\cdot\vec{Z} & 1 \\ \end{matrix} \right)
   ++++
   
  -Alright, enough theory, let’s see some code. This is our matrix definition.
  +理論はここまでにしましょう。次はソースコードに行きます。まずは行列の定義です。
   
   [source,cpp]
   ----
  
positive.code: }
  ----
  
  Very straight forward. This is the fastest function you can have, it only does a transpose and some dot products. If we add in scales, it takes a little more time to do rescaling, but still pretty fast. There is a little trick for calculating squared size, we can make use of the fact that we need to transpose 3x3 rotation part anyway, do squared size after and calculate 3 axes in one go.
  
  [source,cpp]
  ----
  
negative.code: #define VecShuffle_2323(vec1, vec2)        _mm_movehl_ps(vec2, vec1)
  ----
  
  下記はスケール１のトランスフォーム行列の逆行列を求める関数です。
  
  [source,cpp]
  ----
  