クォータニオンのSQUADが連続的微分可能であることの証明
クォータニオンを用いた回転の補間(LERP, SLERP, SQUAD)の内容を前提とする.
本稿では SQUAD が$ C^1級であることを示す
証明のために $ {\rm SLERP} 関数の別の表現として
$ {\rm Slerp} \left( \Delta {\boldsymbol q} , {\boldsymbol q}, t \right) = \Delta {\boldsymbol q}^t {\boldsymbol q} = \exp \left( t \log \Delta {\boldsymbol q} \right) {\boldsymbol q},
を用いる($ {\rm SLERP}\left( {\boldsymbol q}_i , {\boldsymbol q}_{i+1} , t \right) = {\rm Slerp} \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_i , {\boldsymbol q}_i , t \right)).
まず,$ {\rm Slerp}の導関数を調べる.
$ \begin{aligned} \frac{\partial }{\partial \Delta {\boldsymbol q}} {\rm Slerp} & = \frac{d \log \Delta {\boldsymbol q}}{d \Delta {\boldsymbol q}} \frac{d t \log \Delta {\boldsymbol q}}{d \log \Delta {\boldsymbol q}} \frac{ d \exp \left( t \log \Delta {\boldsymbol q} \right)}{ d ~ t \log \Delta {\boldsymbol q} } {\boldsymbol q} \\ & = \frac{d \log \Delta {\boldsymbol q}}{d \Delta {\boldsymbol q}} t \frac{ d \exp \left( t \log \Delta {\boldsymbol q} \right)}{ d ~ t \log \Delta {\boldsymbol q} } {\boldsymbol q} , \end{aligned}
$ \frac{\partial}{\partial {\boldsymbol q}} {\rm Slerp} = \left( \Delta {\boldsymbol q} \right)^t \frac{d {\boldsymbol q}}{d {\boldsymbol q} },
$ \frac{\partial}{\partial t} {\rm Slerp} = \log \left( \Delta {\boldsymbol q} \right) \Delta {\boldsymbol q}^t {\boldsymbol q},
最初の式でクォータニオンのベクトルによるやばい微分が出てくるけど↓の議論で係数 0 を示すので計算できなくてもヨシ.
$ {\rm SQUAD}の$ tによる微分は
$ \begin{aligned} \frac{d }{d t} {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right) & = \frac{ d \Delta {\boldsymbol q} (t)}{ dt} \cdot \frac{\partial}{\partial \Delta {\boldsymbol q} } {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right) \\ & + \frac{ d {\boldsymbol q} (t)}{ dt} \cdot \frac{\partial}{\partial {\boldsymbol q} } {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right) \\ & + \left( 2 - 4 t \right) \frac{\partial}{\partial t} {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right), \end{aligned}
ただし,$ \Delta {\boldsymbol q} = {\rm SLERP} \left( {\boldsymbol s}_i , {\boldsymbol s}_{i+1} , t \right) {\rm SLERP} \left( {\boldsymbol q}_i , {\boldsymbol q}_{i+1} , t \right)^{-1},$ {\boldsymbol q} = {\rm SLERP}\left( {\boldsymbol q}_i , {\boldsymbol q}_{i+1} , t \right).
$ t = 0, 1,よって$ 2t(1-t) = 0 の場合のみ考えるので,
$ \begin{aligned} \frac{\partial}{\partial \Delta {\boldsymbol q}} {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right) & = 0 \\ \frac{\partial}{\partial {\boldsymbol q}} {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right) & = \frac{d {\boldsymbol q}}{ d {\boldsymbol q}} \\ \frac{\partial}{\partial t } {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right) & = \log \left( \Delta {\boldsymbol q} \right) {\boldsymbol q} \end{aligned}
$ \Delta {\boldsymbol q} による微分は 0 なので無視.
code: tex
\frac{ d {\boldsymbol q}(t) }{ d t} \frac{ d {\boldsymbol q} }{ d {\boldsymbol q}} = \frac{ d {\boldsymbol q} }{ d t}
となる.
以降,$ {\rm Slerp} = {\rm Slerp} \left( \Delta {\boldsymbol q} (t) , {\boldsymbol q} (t) , 2 t ( 1- t) \right) とする.
$ t=0のとき,$ \Delta {\boldsymbol q}(t) = {\boldsymbol s}_i {\boldsymbol q}^{-1}_i,$ {\boldsymbol q} (t) = {\boldsymbol q}_i,$ \frac{d}{dt} {\boldsymbol q} = \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_i \right) {\boldsymbol q}_iなので,
$ \frac{d}{dt} {\rm Slerp} = \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_i \right) {\boldsymbol q}_i + 2 \log \left( {\boldsymbol s}_i {\boldsymbol q}^{-1}_{i} \right) {\boldsymbol q}_i \quad (1)
$ t=1のとき,$ \Delta {\boldsymbol q} (t) = {\boldsymbol s}_{i+1} {\boldsymbol q}^{-1}_{i+1},$ {\boldsymbol q} (t) = {\boldsymbol q}_{i+1},$ \frac{d}{dt} {\boldsymbol q} = \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_i \right) {\boldsymbol q}_{i+1}なので,
$ \frac{d}{dt} {\rm Slerp} = \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_i \right) {\boldsymbol q}_{i+1} -2 \log \left( {\boldsymbol s}_{i+1} {\boldsymbol q}^{-1}_{i+1} \right) {\boldsymbol q}_{i+1} \quad (2)
注意: $ \frac{d}{d t} {\rm Slerp} と $ \frac{\partial}{\partial t} {\rm Slerp} を区別すること
以上より,
$ \frac{d}{dt}{\rm SQUAD} \left( {\boldsymbol q}_{i-1} , {\boldsymbol q}_{i}, {\boldsymbol s}_{i-1}, {\boldsymbol s}_{i} , 1 \right) = \frac{d}{dt}{\rm SQUAD} \left( {\boldsymbol q}_{i} , {\boldsymbol q}_{i+1}, {\boldsymbol s}_{i}, {\boldsymbol s}_{i+1} , 0 \right)
となる条件は,
(1) と, (2) を i から i-1 に変えたものが一致すればよい.
$ \begin{aligned} & \log \left( {\boldsymbol q}_{i} {\boldsymbol q}^{-1}_{i-1} \right) {\boldsymbol q}_{i} - 2 \log \left( {\boldsymbol s}_{i} {\boldsymbol q}^{-1}_{i} \right) {\boldsymbol q}_{i} = \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_i \right) {\boldsymbol q}_{i} + 2 \log \left( {\boldsymbol s}_{i} {\boldsymbol q}^{-1}_{i} \right) {\boldsymbol q}_{i} \\ & \Leftrightarrow 4 \log \left( {\boldsymbol s}_{i} {\boldsymbol q}^{-1}_{i} \right) = \log \left( {\boldsymbol q}_{i} {\boldsymbol q}^{-1}_{i-1} \right) - \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_{i} \right) \\ & \Leftrightarrow{\boldsymbol s}_{i}= \exp \left( - \frac{ \log \left( {\boldsymbol q}_{i-1} {\boldsymbol q}^{-1}_{i} \right) + \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_{i} \right) }{4}\right) {\boldsymbol q}_{i} \\ & = {\boldsymbol q}_i \exp \left( - {\boldsymbol q}^{-1}_i \frac{ \log \left( {\boldsymbol q}_{i-1} {\boldsymbol q}^{-1}_{i} \right) + \log \left( {\boldsymbol q}_{i+1} {\boldsymbol q}^{-1}_{i} \right) }{4} {\boldsymbol q}_i \right) ~ ~ \because \exp({\omega}) = {\boldsymbol p} \exp ( {\boldsymbol p}^{-1} \omega {\boldsymbol p} ) {\boldsymbol p}^{-1} \\ & = {\boldsymbol q}_i \exp \left( - \frac{ \log \left( {\boldsymbol q}^{-1}_{i} {\boldsymbol q}_{i-1} \right) + \log \left( {\boldsymbol q}^{-1}_{i} {\boldsymbol q}_{i+1} \right) }{4} \right) ~ ~ \because {\boldsymbol p}^{-1} \log({\boldsymbol q}) {\boldsymbol p} = \log ( {\boldsymbol p}^{-1} {\boldsymbol q} {\boldsymbol p} ) \end{aligned}
使用した性質については クォータニオンの指数対数(exp, log)写像 を見よ.
#3DRotation