[Reference] Constant-length energy function

December 12, 2013

Update: What follows is an early working of the constant-length energy function and much of which I learned to be invalid.

Energy function and its gradient are:

\[ E = 0.5 (0.5 \mu^\top D^\top D \mu - 0.5 t^\top D^\top D t)^2 \\ \frac{\partial E}{\partial t_i} = 2E \left [ 0.5 \mu^\top D^\top D J_\mu - t^\top D^\top D \right ] \]

Mu and it's jacobian are:

\[ \begin{align} \mu &= K_* S^\top \left( S K S^\top + I\right)^{-1} S y \\ &= K_* S^\top U^{-1} S y \\ &= K_* z \\ \frac{\partial \mu}{\partial t_i} &= K'_* z + K_* z' \\ J_\mu &= \operatorname{diag_{3x1}}(\Delta_{3x3} z) + \left( \Delta_{1x3} \right)^\top \odot \operatorname{repmat}(z_3 N/3, 1) + K_* J_z \end{align} \] where \(J_z\) is the Jacobian of \(z\), and \(z_3\) is the re-arrangement of \(z\) into columns of xyz vectors. \(\Delta_{3x3}\) is the conversion of \(\Delta\) to 3D by block-diagonalizing three copies of \(\Delta\) and permuting rows and columns so each (x,y,z) is grouped together. \(\Delta_{1x3}\) repeats \(\Delta\) over three columns and permuting columns. \(\operatorname{diag_{3x1}}\) is a modified diagonalization operator where x is split into 3x1 matrices, which are arranged into block-diagonal form.
Let \(A = S^\top U^{-1} S \), so \(z = Ay \). \[ \begin{align} \frac{\partial z}{\partial t_i} &= \frac{\partial }{\partial t_i} D^\top U^{-1} S y \\ &= - S^\top U^{-1} \frac{\partial U}{\partial t_i} U^{-1} S y \\ &= - S^\top U^{-1} S \frac{\partial K}{\partial t_i} S^\top U^{-1} S y \\ &= - A \frac{\partial K}{\partial t_i} z \\ &= - A \left \{ \left ( \begin{array}{c} \mathbf{0} \\ \vdots \\ \delta_i^\top \\ \vdots \\ \mathbf{0} \\ \end{array} \right ) + \left ( \begin{array}{c} \mathbf{0} & \cdots & \delta_i & \cdots & \mathbf{0} \end{array} \right) \right \} z \\ &= - A_i (\delta_i^\top z) - A \delta_i z_i \\ &= - A_{3i:3i+2} (\delta_{i,3x3}^\top z) - A \delta_{i,3x3} z_{3i:3i+1} & \text{(3D version)} \\ J_z &= - \operatorname{sum_{1x3}}\left(A \odot \left( \Delta_{3x3} z \right)^\top \right) - A \left [ \left( \Delta_{1x3} \right )^\top \odot \operatorname{repmat}(z_3, N/3, 1) \right ] \end{align} \]
Posted by Kyle Simek
blog comments powered by Disqus