# A Angle between two quaternions

1. Apr 11, 2016

### Fidelis

Hello!

I have two quaternions with norm equal to 1. Both are represented in the angle-phase form, i.e, I have q=exp(i*\phi)exp(k*\psi)exp(j*\theta) and p=exp(i*\phi')exp(k*\psi')exp(j*\theta'). Let \alpha be the angle between q and p. I need to write \alpha in function of \phi-\phi', \psi-\psi' and \theta-\theta' in a simple way. Could anyone give me some idea?

2. Apr 11, 2016

### BiGyElLoWhAt

In any vector space, $A\cdot B = |A||B|cos(\theta)$ with theta the angle between two vectors and $\cdot$ the inner product.
A quick google search gives this:
https://www.researchgate.net/post/How_do_I_calculate_the_smallest_angle_between_two_quaternions [Broken]
Which says use the dot product.

Last edited by a moderator: May 7, 2017
3. Apr 11, 2016

### Fidelis

The "inner product" would be good for me if p and q were in Cartesian form. My problem is that I need to write \alpha in function of \phi-\phi', \psi-\psi' and \theta-\theta' in a simple way. The quartenions q and p are in the phase-angle form and I can not convert the quaternions to the Cartesian form. This is my challenge!

Thanks

4. Apr 11, 2016

### BiGyElLoWhAt

5. Apr 21, 2016

### Dominik Tugend

I assume by Angle-Phase-Form you mean the polar decomposition as in here:
https://en.wikipedia.org/w/index.ph...5732179#Exponential.2C_logarithm.2C_and_power

You still need an rotation angle for each quaternion (you only gave 3 components, but you need still need the angle).
Be aware that the actual rotation angle is $2 \cdot \theta$!

----

I don't have a good answer, but what you need is related to the angle used in a Quaternion Slerp
http://www.geometrictools.com/Documentation/Quaternions.pdf
You might find "2. Relationship of Quaternions to Rotations" useful in that document.

Here is some code by James McEnnan I use in my own project to get the angle and the eigen-axis (rotation axis) between two quaternions, see function getang here:
https://sourceforge.net/p/qspline-cc0/code/1/tree/qspline/trunk/qspline.c#l378
Be aware that in this code [0],[1],[2] are the vector parts of the quaternions and [3] is the scalar part.

I know this is not the form you have, but maybe it will be of some use to you.

Last edited by a moderator: Apr 21, 2016