# Is there a formula for the rotation vector in terms of the angular velocity vector?

Euler's theorem of rotations states that for any rigid body motion with one point fixed is equivalent to a rotation about some axis passing through that fixed point. So let's consider a rigid body with one point fixed, and for any time $$t$$ let $$\vec{\alpha}(t)$$ denote the "rotation vector" of the rotation corresponding to the rigid body's motion between time $$t_0$$ and time $$t$$. For those who don't know, the rotation vector of a rotation is a vector whose magnitude is equal to the angle of the rotation and which points along the axis of the rotation; see this Wikipedia article.

Now due to the non-commutative nature of rotations, the angular velocity $$\vec{\omega}(t)$$ does not in general equal the time derivative of $$\vec{\alpha}(t)$$ as one might intuitively expect. The relationship between the two is considerably more complicated: $$\vec{\omega}= \dot{\vec{\alpha}} - \frac{1 - \cos \alpha}{\alpha^2} \left(\vec{\alpha} \times \dot{\vec{\alpha}}\right) + \frac{\alpha - \sin \alpha}{\alpha^3} \left(\vec{\alpha} \times \left(\vec{\alpha} \times \dot{\vec{\alpha}}\right)\right)\,$$

Now this is a formula for the angular velocity vector in terms of the rotation vector and its time derivative. But my question is, is there a formula for the rotation vector in terms of the angular velocity vector? That is to say, if you knew what $$\vec{\omega}(t)$$ was for all times $$t$$, is it possible to calculate what $$\vec{\alpha}(t)$$ for any given value value of $$t$$.

If rotations were commutative, of course, you could just integrate $$\vec{\omega}(t)$$ from $$t_0$$ to $$t$$. But they aren't, so something more complicated may be required. One thought I had was that in my question and answer here I gave the formula for the composition of two rotation vectors. So what you could do is for each infinitesimal time interval $$[t,t+\mathrm dt]$$, you could take the rotation vector of the rigid body's motion during that time interval, which is given by $$\vec{\omega}(t)~\mathrm dt$$ (as you can see here). And then in principle you could compose all those infinitely many $$\vec{\omega}(t)~\mathrm dt$$'s together. But does anyone know how that would work?

EDIT: To be clear, I want an explicit expression for the rotation vector in terms of the angular velocity vector which makes no reference to matrices. If one wanted to use matrices, one could convert the angular velocity vector to a skew-symmetric matrix, use the time-ordered exponential to get the rotation matrix, use the log map to get a skew-symmetric matrix corresponding to $$\alpha$$, and then convert that to a rotation vector. But that's not the sort of thing I'm looking for; I want a formula entirely in terms of vector operations.

• There is a reason people use quaternions over rotation vectors. Commented Oct 21, 2016 at 15:15
• @ja72 Yes, I know that quarternions have advantages over rotation vectors in this regard. But I want to see if we can get a formula for the rotation vector. Commented Oct 21, 2016 at 15:20
• Note that the 3×3 anti-symmetric matrix mentioned is $$[\begin{pmatrix}x\\y\\z\end{pmatrix} \times] = \begin{bmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \end{bmatrix}$$ if you don't want to use the tensor notation for cross products (like in the paper). The above gives $$[\vec{a} \times] \vec{b} \equiv \vec{a} \times \vec{b}$$ Commented Oct 21, 2016 at 20:23
• @ja72 Yeah, I'm aware of that. What's your point? Commented Oct 21, 2016 at 20:26
• Tensors give me headaches. I can understand better things with linear algebra and so I thought there would be others also. Trying to help out. Commented Oct 21, 2016 at 20:27

I'll try to give here a very partial answer to the question. Not sure whether it is interesting in itself, but it might provide a hint for further development. Possibly its place would be within a comment, but comments are limited in length and it wouldn't fit.

Let's define $\alpha (t_0,t)$ as the $\alpha (t)$ from the question related to the given $t_0$. We identify the rotation vector with the rotation itself. For $t_i = t_0 + i\ dt$ and $t = t_0 + n\ dt$, we have by simple composition of successive rotations $$\alpha (t_0,t) = \prod_{i=n-1}^{0} \alpha (t_i,t_{i+1}).$$ We know from this question/answer that $\partial_2 \alpha (t,t) = \omega(t)$ for all $t$. Using $\alpha (t,t+dt) = I+\partial_2 \alpha (t,t)\ dt + o(dt) = I+\omega(t)\ dt + o(dt)$, we have $$\alpha (t_0,t) = \prod_{i=n-1}^{0} I+\omega(t_i)\ dt + o(dt).$$ This provides by the way a numerical method expressing $\alpha$ in terms of $\omega$.

In the very special case where all these rotations commute (example of common axis), the limit is an exponential: taking the log and the limit when $dt \to 0$, we have $$\log (\alpha (t_0,t)) = \sum_{i=n-1}^{0} \omega(t_i)\ dt + o(dt) \to \int_{t_0}^{t} \omega(s) \ ds,$$ hence $$\alpha (t_0,t) = \exp \left( \int_{t_0}^{t} \omega(s) \ ds \right).$$

In the general non commutative case, the log will involve Lie brackets starting with $dt^2[\omega(t_i),\ \omega(t_j)]$ (cf. Dynkin's formula), and some more courage seems required.

EDIT: according to a comment below from Keshav Srinivasan, the expression above becomes in the general non commutative case $$\alpha (t_0,t) = \operatorname{OE}[\omega](t_0,t)= \mathcal{T} \left\{e^{\int_{t_0}^{t} \omega(s) \, ds}\right\},$$ see Ordered exponential for the definition of $\operatorname{OE}[\omega](t)$. Though this is not an exact answer to the question, as it involves rotation matrices instead of the required rotation vectors.

• There's one thing you're leaving out: the composition of axis-angle vectors is not a simple product. Rather it's given by the formula described in my question and answer here: physics.stackexchange.com/a/287819/27396 The strategy you're pursuing would make more sense if we were trying to find the rotation matrix in terms of the angular velocity; in that case we could use the time-ordered exponential described in this Wikipedia article, as well as the Dyson series. Commented Oct 24, 2016 at 13:18
• I don't see what I am leaving out: as I wrote it ("We identify the rotation vector with the rotation itself"), I am not using composition of axis-angle vectors but composition of rotations (elements of the group $SO(3)$). One is free to use whatever form is the most convenient, rotation vector or rotation matrix, it is only the result that counts. Do you see anything wrong in the first composition formula giving $\alpha (t_0,t)$? I don't understand your last remark, isn't finding the rotation matrix equivalent to finding the rotation vector?
– user130529
Commented Oct 24, 2016 at 14:31
• Weill, I want an explicit formula for the rotation vector in terms of the angular velocity vector, I don't want to convert to convert to a rotation matrix and convert back. Commented Oct 24, 2016 at 14:41
• I still don't understand your point, it is elementary to extract the rotation vector from the rotation matrix and vice versa.
– user130529
Commented Oct 24, 2016 at 15:07
• Well, look at the formula given on my question, it relates the angular velocity vector and the rotation vector without mentioning matrices at all. That's the sort of formula that I'm looking for. Commented Oct 24, 2016 at 15:09

I wholeheartedly agree with user ja72 to ditch vector notation and work Lie theoretically. We represent $\alpha$ and $\omega$ as $3\times3$ skew-symmetric matrices in the Lie algebra $\mathfrak{so}(3)$; then the total rotation is the $3\times3$ orthogonal rotation matrix $\exp(\alpha(t))$ and the instantaneous angular velocity is $\omega = \left.\mathrm{d}_\tau\left(e^{-\alpha(t)}\,\exp(\alpha(t+\tau)\right)\right|_{\tau=0}$. As matrices, $\alpha$ and $\omega$ represent the actions of cross-products in vector notation: this is what ja72 means in his comment:

Note that the 3×3 anti-symmetric matrix mentioned is $[\begin{pmatrix}x\\y\\z\end{pmatrix} \times] = \begin{bmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \end{bmatrix}$ if you don't want to use the tensor notation for cross products (like in the paper). The above gives $[\vec{a} \times] \vec{b} \equiv \vec{a} \times \vec{b}$

We can do what you want using the general formula for the derivative of an Lie group member $\omega = \left.\mathrm{d}_\tau\left(e^{-\alpha(t)}\,\exp(\alpha(t+\tau)\right)\right|_{\tau=0}$ that is stated and proven as Theorem 1.5 in section 1.2 of Rossmann, "Lie Groups: An Introduction through Linear Groups":

$$\omega(t) = \sum\limits_{k=0}^\infty \frac{(-1)^k\,\mathrm{ad}(\alpha(t))^k}{(k+1)!}\,\dot{\alpha}(t)$$

The notation $\mathrm{ad}(\alpha(t))^k\,\dot{\alpha}(t)$ means to iterate the Lie bracket mapping $\dot{\alpha}\mapsto[\alpha,\,\dot{\alpha}]$ for $k$ iterations.

Since the operator:

$$\sum\limits_{k=0}^\infty \frac{(-1)^k\,\mathrm{ad}(\alpha(t))^k}{(k+1)!}$$

is identity operator at $t=0$ (when there has been no rotation and $\exp(\alpha(t))=\mathrm{id}$) and since its determinant is a continuous function of $t$, there is some nonzero time interval $[0,\,\epsilon]$ wherein the operator can be inverted. So, if you are given $\omega(t)$ then for some nonzero time interval you can integrate (probably numerically):

$$\dot{\alpha}(t) = \left(\sum\limits_{k=0}^\infty \frac{(-1)^k\,\mathrm{ad}(\alpha(t))^k}{(k+1)!}\right)^{-1}\omega(t)$$

and you keep track of $\alpha(t)$ and the determinant of the inverted operator at all times. When the determinant becomes smaller than some "danger" threshold, you make a note of the rotation vector and operator, realign your co-ordinates so that the rotation you have reached becomes the datum orientation, and begin again. At the end of the process, you will have your total rotation vector and rotation operator as a product of rotation operators, each calculated through the procedure above.

• If you want to do things in terms of matrices, this may help: you can find the rotation matrix in terms of the angular velocity matrix using the time-ordered exponential: en.wikipedia.org/wiki/Ordered_exponential And then you just take the log of the rotation matrix to get the $\alpha$ matrix. Commented Oct 26, 2016 at 3:31
• @KeshavSrinivasan That's an equivalent procedure - use of the Peano-Baker Series (called the Dyson series in particle physics) is another. The method above is particularly well suited to a simple DE integration. Indeed, the inverted matrix is a time-ordered integral of the log function. Commented Oct 26, 2016 at 3:33
• In any case, the time-ordered exponential, the Dyson series, and your approach aren't really what I'm looking for in an answer. I would like an explicit formula for the rotation vector in terms of the angular vector, in a way that doesn't make reference to matrices. (Although it's fine to use matrices in the derivation, as Asher Peres does in the derivation of the formula in my question.) Commented Oct 26, 2016 at 3:37
• @KeshavSrinivasan Then you should state that requirement explicitly in your question. Commented Oct 26, 2016 at 3:46
• @KeshavSrinivasan Moreover, to convert the above to a vector formula, you'll find the Taylor series for the inverse matrix in terms of powers of $\mathrm{ad}(\alpha)$ and then note that $\mathrm{ad}(\alpha)^k\,\omega$ as a matrix expression is equivalent to $2^k\,\alpha\times(\alpha\times\cdots(\alpha\times\omega)\cdots)$ with $k$ cross products. You'll therefore have an infinite series, which you can simplify to a linear combination of $\omega$, $\alpha$ and $\alpha\times\omega$ through repeated use of the triple product formula Commented Oct 26, 2016 at 4:15

The answer is of quite some importance to the navigation community. The "rotation vector" is sometimes called a "Bortz Vector" after this paper that brought some prominence to this exact problem, with the result of the derivation repeated below.

Using the notation $\vec{\alpha}$ as the rotation vector, $\theta=|\vec{\alpha}|$ as the magnitude of the rotation vector, $\times$ being the vector cross product and $\vec{\omega}$ as being the angular rate of the body with respect to inertial space, resolved in the body frame (i.e. what a gyro would measure):

$$\dot{\vec{\alpha}} = \vec{\omega} + \frac{1}{2}{\vec{\alpha}}\times\vec{\omega} + \frac{1}{\theta^2}\left[ 1 - \frac{\theta \sin\theta}{2(1-\cos\theta)}\right]\vec{\alpha}\times\left(\vec{\alpha}\times\vec{\omega}\right) \\ \theta \ne \pm n\pi, n=1,2,3,...$$

Shuster details several ways in which this equation may be derived.

For a practical application of the equation, see Chapter 3.4 of Kim, who uses it to derive an inertial navigation loop.

References:

Bortz, J, "A New Mathematical Formulation for Strapdown Inertial Navigation", IEEE Transactions on Aerospace and Electronic Systems, 1971, vol7, p61-66.

Shuster, M. "The kinematic equation for the rotation vector", IEEE Transactions on Aerospace and Electronic Systems, 1993, vol.29, p263-267.

Kim, J. "Autonomous navigation for airborne applications", PhD Thesis, University of Sydney, 2004.

This angle-axis vector $$\vec{\theta} = \theta\, \hat{e}$$ has derivative based on the chain rule

$$\dot{\vec{\theta}} = \dot{\theta} \hat{e} + \theta \dot{\hat{e}} = \dot{\theta} \hat{e} + \theta \,\vec{\omega} \times \hat{e}$$

So you have that $$\vec{\omega} \times \hat{e} =\frac{ \dot{\vec{\theta}} - \dot{\theta} \hat{e}}{\theta}$$

But what is $$\dot{\theta}$$? You find it with $$\dot{\theta} = \hat{e}\cdot\dot{\vec{\theta}}$$

So now you have this expression

$$\vec{\omega}\times\vec{\theta}=\dot{\vec{\theta}}-\hat{e}\left(\hat{e}\cdot\dot{\vec{\theta}}\right)$$

...This is as far as I went...