# Quaternion's Operators and Combining them?

This topic is 5126 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I'm just wondering what the operators between quaternions ( add, subtract, dot... ) are used for and also if you can combine the rotations of two quaternions without creating matricies.

##### Share on other sites
There are lots of good references on the subject. The book '3D Math Primer', google, and the articles section of this site are good places to start.

Briefly, addition and subtraction are component-wise, just like with vectors. The dot product is also defined. Like with vectors, it is the sum of the products of the components, and results in a scalar value that can be viewed as a measure of the 'similarity' between the two quaternions.

Yes, you can concatenate rotations by multiplying quaternions together. You need only convert to matrix form if you specifically need a matrix (e.g. to transform many vertices, or for submission to an API function).

[Edit: fixed typo]

[Edited by - jyk on December 2, 2004 10:56:37 PM]

##### Share on other sites
In 3D programming, primitive (quaternion x quaternion -> quaternion) operations other than quaternion multiplication aren't really used; unless you count the additions/subtractions that show up by technicality when performing a multiplication. More common are (quaternion x scalar -> quaternion) operations like scalar multiplication, and even then scalar multiplication is only really used to normalize the quaternions. Though some operations, like power functions are used in interpolating between quaternions.

The concatenation of two rotations represented by two quaternions q1 and q2 can be represented by multiplying q1 and q2 together. Just watch the order of rotations since quaternion multiplications are non-abelian.

##### Share on other sites
Not disagreeing with SiCrane, but addition and scalar multiplication do pop up occasionally, so it is useful to have those functions defined in your quaternion class. For example, an implementation of Slerp() might include something like the following:

result = t1 * q1 + t2 * q2; // result, q1 and q2 are quaternions, and t1 and t2 are scalars

##### Share on other sites
Addition of unit-length quats doesn't really have a meaning, because it denormalizes them. But, pretty much all vector math has a quaternion equivalent. Vector addition is quaternion multiply. Subtraction is multiplication of inverse. Vector dot is quaternion dot. And scalar multiply for vectors is quaternion power. i.e. if you want to represent a rotation of 1/3 of a quaternion q: r = q^.333f

That's how they get the equation for slerp. Linear interpolation of vectors is rt + s(1-t)... and linear interpolation of quaternions (slerp) is q^t s^(1-t) (where quaternion multiply is analagous to vector addition). The equation you see in books is just that expanded out into sin and cos with some terms simplified for speed.

I wrote a critically-damped quaternion interpolator using the vector code in GPG4, and just turned each of the vector expressions into the quaternion equivalent. It worked perfectly with 2 caveats: 1) you have to do the same dot as in slerp to find the shortest-arc quaternion difference. and 2) you can't represent angular velocities greater than 1 rev/unit time with unit-length quaternions so you have to choose your unit time carefully.

##### Share on other sites
Quote:
 Original post by AxiverseI'm just wondering what the operators between quaternions ( add, subtract, dot... ) are used for and also if you can combine the rotations of two quaternions without creating matricies.

Perhaps I am mistaken, but isn't a quaternion just a 4x4 matrix? I don't see how you can get away without creating matricies when it is already one.

##### Share on other sites
Yes you are. Go to mathworld and see what a quaternion is. Quaternions are "equivalent" (isomorph) to a subset (subfield, right term in english ?) of 3x3 matrices : the right handed rotation and uniform scaling matrices (which are a subset of the 3D similarity matrices). And 3x3 matrices can be seen as a subset of the 4x4 homogenous matrices (no translation).

##### Share on other sites
It's a sub-ring. A field or a sub-field is commutative.

1. 1
2. 2
Rutin
19
3. 3
4. 4
5. 5

• 13
• 26
• 10
• 11
• 9
• ### Forum Statistics

• Total Topics
633736
• Total Posts
3013598
×