I am trying to reproduce a result from "A Primer on the Differential Calculus of 3D Orientations" - Bloesch, 2016

Consider equations (72) and (73):

(72): $\frac{\partial}{\partial \Phi}\left[\exp(\Phi(\varphi)) = \Phi\circ\exp(\varphi)\circ\Phi^{-1}\right]$

(73): $-\Gamma(\Phi(\varphi))\Phi(\varphi)^\times = I - C(\Phi)C(\varphi)C(\Phi)^T$

From that, I am having trouble figuring out, why this holds:

$\frac{\partial}{\partial \Phi}\left(\Phi\circ\exp(\varphi)\circ\Phi^{-1}\right) = I - C(\Phi)C(\varphi)C(\Phi)^T$

The article mentions using the chain rule, the product rule, and identities 29, 30, 28:

(28): $\frac{\partial}{\partial \Phi}(\Phi^{-1}) = -C(\Phi)^T$

(29): $\frac{\partial}{\partial \Phi_1} (\Phi_1 \circ \Phi_2) = I$

(30): $\frac{\partial}{\partial \Phi_2} (\Phi_1 \circ \Phi_2) = C(\Phi_1)$

Therefore, I have tried the following:


$f(\Phi) = \Phi \circ exp(\varphi)$


$g(\Phi) = \Phi^{-1}$


$\frac{\partial}{\partial \Phi}\left(\Phi\circ\exp(\varphi)\circ\Phi^{-1}\right) = \frac{\partial}{\partial \Phi}\left(f(\Phi) \circ g(\Phi)\right)$

And from the identities:

$f'(\Phi) = I$

$g'(\Phi) = -C(\Phi)^T$

Then I apply the product rule (equation 38 in The Matrix Cookbook):

$\frac{\partial}{\partial \Phi}\left(f(\Phi) \circ g(\Phi)\right) = f'(\Phi) \circ g(\Phi) + f(\Phi) \circ g'(\Phi)$

$= I \circ \Phi^{-1} + \Phi \circ exp(\varphi) \circ (-C(\Phi)^T)$

I then simplify this. For that, I use, that I am working with 3D orientations, and for rotation matrices $C^{-1} = C^T$:

$= C(\Phi)^{T} - C(\Phi) \circ C(\varphi) \circ C(\Phi)^T$

This brings me to my problem, because I am left with $C(\Phi)^{T}$ as the first term in this equation, whereas I should end up with the identity matrix. Where did I go wrong here?

I have tried verifying this numerically, and from that it seems that I should in fact end up with the identity matrix term instead of the one I end up with. I also find it suspicious, that the author mentions the use of identity 30, which I do not seem to use.

  • 1
    $\begingroup$ I suspect you cannot use the "usual" product rule here. You should somehow derive the product rule associated with concatenation operation $\circ$. $\endgroup$
    – S4JJ4D
    Jun 29, 2022 at 11:34
  • $\begingroup$ @S4JJ4D That is a good point. Unfortunately, I haven't been able to find any mention of a "special" prodcut rule for this situation, and the author does not indicate any such thing. In a related article, Solà explicitly mentions, that the chain rule holds here, but makes no mention of the product rule. I will have to try deriving it on my own, as you said, though I fear that this will be a little over my head. $\endgroup$
    – Andy
    Jun 29, 2022 at 11:59
  • 1
    $\begingroup$ As an example, you cannot derive Eq.(70) by expanding $\frac{\partial}{\partial \Phi_{2}} ( \Phi_{1} \circ \Phi_{2} )$ using the usual product rule. Chain rule, however, clearly holds, but I don't see how $\Phi \circ \exp (\varphi) \circ \Phi^{-1}$ could be reformulated as a chain of operations. $\endgroup$
    – S4JJ4D
    Jun 29, 2022 at 12:21
  • 1
    $\begingroup$ I could find some identities for the special cases of product rule: $$ \\ $$ - Second term does not depend on $\Phi$: $$ \Phi \mapsto g(\Phi) \circ \Phi_2 \\ \frac{\partial}{\partial \Phi} (g(\Phi) \circ \Phi_2) = \frac{\partial}{\partial \Phi} g (\Phi) $$ - First term does not depend on $\Phi$: $$ \Phi \mapsto \Phi_1 \circ g(\Phi) \\ \frac{\partial}{\partial \Phi} (\Phi_1 \circ g(\Phi) ) = - C(\Phi_1) C(g(\Phi)) \frac{\partial}{\partial \Phi} (g(\Phi))^{-1} $$ But for the general case, I don't know. $$ \Phi \mapsto h(\Phi) \circ g(\Phi) $$ $\endgroup$
    – S4JJ4D
    Jun 29, 2022 at 13:06

1 Answer 1


Consider the following sequence of mappings:

$$ \Phi \mathop{\longmapsto}\limits^{f_1\strut} (g(\Phi), h(\Phi)) \mathop{\longmapsto}\limits^{f_2\strut} g(\Phi) \circ h(\Phi) $$

Where $\circ$ is the concatenation operation defined in the paper. Define $i = f_2 \bullet f_1$ where $\bullet$ denotes the function composition. The product rule is the expanded form of the expression $\frac{\partial}{\partial \Phi} i(\Phi)$: $$ \frac{\partial}{\partial \Phi} i(\Phi) = \frac{\partial}{\partial \Phi} (f_2 \bullet f_1)(\Phi) = \Big( \frac{\partial f_2}{\partial f_1(\Phi)} \Big) \Big( \frac{\partial f_1}{\partial \Phi} \Big) = \begin{bmatrix}\frac{\partial}{\partial g}(g \circ h)&\frac{\partial}{\partial h}(g \circ h)\end{bmatrix} \begin{bmatrix}\frac{\partial}{\partial \Phi} g(\Phi)\\ \\ \frac{\partial}{\partial \Phi} h(\Phi)\end{bmatrix} $$ According to the identities (29) and (30), this could be further simplified as $$ \begin{bmatrix}\boldsymbol{I}&\boldsymbol{C}(g(\Phi))\end{bmatrix} \begin{bmatrix}\frac{\partial}{\partial \Phi} g(\Phi)\\ \\ \frac{\partial}{\partial \Phi} h(\Phi)\end{bmatrix} $$ Performing the multiplication, the product rule is obtained: $$ \frac{\partial}{\partial \Phi} (g(\Phi) \circ h(\Phi)) = \frac{\partial}{\partial \Phi} g(\Phi) + \boldsymbol{C}(g(\Phi)) \frac{\partial}{\partial \Phi} h(\Phi) $$ Returning back to the problem of computing $\frac{\partial}{\partial \Phi}\left(\Phi \circ \exp (\varphi) \circ \Phi^{-1}\right)$, take $g=\Phi$ and $h= \exp (\varphi) \circ \Phi^{-1}$: \begin{align*} \frac{\partial}{\partial \Phi}\left(\Phi \circ \exp (\varphi) \circ \Phi^{-1}\right) &= \frac{\partial}{\partial \Phi} \Phi + \boldsymbol{C}(\Phi) \frac{\partial}{\partial \Phi} ( \exp (\varphi) \circ \Phi^{-1} ) \\ &= \boldsymbol{I} + \boldsymbol{C}(\Phi) ( \boldsymbol{C}(\varphi) \frac{\partial}{\partial \Phi} \Phi^{-1}) \\ \\ &= \boldsymbol{I} - \boldsymbol{C}(\Phi) \boldsymbol{C}(\varphi) \boldsymbol{C}(\Phi)^{T} \tag*{(identity (28)) } \end{align*} Which is the result presented in the paper.

  • $\begingroup$ Fantastic, thank you very much for such a clear answer. I have suggested a minor edit, in order to make the order of the composition consistent (using $g \circ h$ all throughout). $\endgroup$
    – Andy
    Jun 30, 2022 at 17:48
  • $\begingroup$ @Andy, approved. Thanks for correcting that. $\endgroup$
    – S4JJ4D
    Jun 30, 2022 at 18:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .