24 votes
Accepted

Using Quaternions: What can I do with them? (without the maths)

Multiplication At least in terms of Unity's implementation of Quaternions, the multiplication order described in the question is not correct. This is important because 3D rotation is not commutative. ...
  • 117k
15 votes

Using Quaternions: What can I do with them? (without the maths)

Where's the dot product used? In Unity, one of the most common users of the dot product is whenever you check if two quaternions are equal via == or ...
13 votes

Rotating an object with quaternion

You should probably use glm::angleAxis() (documentation here): ...
  • 23.5k
12 votes

How can you visualize a quaternion?

One of the visualization methods I like is to represent quaternion (orientation in 3d space) as vector (x,y,z components) + spin (the rotation around that vector, stored in w component). If you are ...
10 votes
Accepted

Is adding quaternions a useful operation?

I can think of two reasons: if your quats represent infinitesimal rotations, adding them together actually yields the composite rotation, provided the result is infinitesimal too (i.e. an element of ...
  • 3,231
6 votes

Switch axes and handedness of a quaternion?

To convert the Quaternion, we need to convert the imaginary part (xyz) which represents the axis of rotation into the destination coordinate system. In this case, that means exchanging x & y while ...
  • 117k
6 votes

How to express and verify euler rotation limits in Unity

Euler angles aren't necessarily a good way of expressing limits over arbitrary ranges, as their behaviour close to zero is very different from their behaviour away from zero. Below I've visualized ...
  • 117k
6 votes
Accepted

Direction vector to quaternion

From http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/ ...
  • 3,699
6 votes
Accepted

Converting a quaternion in a right to left handed coordinate system

A quaternion can be thought of as an angle-axis representation: quaternion.xyz = sin(angle/2) * axis.xyz quaternion.w = cos(angle/2) So, converting them between ...
  • 117k
5 votes
Accepted

Unity - Quaternion - Rotate / Unrotate Error

This is a late response, but I figured this question illustrates a common problem that many people are likely to run into and that deserves an answer. Quaternion rotation uses half the angle you want ...
  • 166
5 votes
Accepted

Quaternion rotation problems

"Is it wrong that I am counting total rotation and then creating [a] quaternion from it?" Yes, because rotations do not combine like simple addition. (In mathematical terms, rotations in three ...
  • 117k
5 votes
Accepted

Unwanted roll when rotating camera with pitch and yaw

As I explained above, this is not an issue with quaternions. Quaternions just represent your rotation. The problem is that you have mutually conflicting goals for this rotation: The camera can look ...
  • 117k
5 votes

Combining Quaternion Rotations

Multiplying two quaternions gives you a quaternion equivalent to performing the two rotations they represent in sequence. ...
  • 117k
4 votes
Accepted

Rotating an object with quaternion

the glm::quat(float, float, float, float); constructor doesn't do what you think it does. It sets the values directly. The values of the quaternion ...
4 votes
Accepted

Explaining vector math for a pendulum camera

The three component vectors right, up, and forward probably point along the axes ...
  • 5,454
4 votes
Accepted

Quaternion Rotation - Clockwise or Counter-Clockwise?

It depends on the coordinate system you're working in. In a right-handed coordinate system (eg. x right, y up, z points toward the viewer), the right-hand rule applies, as mklingen describes in the ...
  • 117k
4 votes
Accepted

Unity's Quaternion.Lerp slows down when target is directly behind turret

Taking a look at your barrel rotation function... ...
  • 117k
4 votes
Accepted

LookRotation() make X axis face the target instead of Z

I've answered a few flavours of this before. The basic idea is to chain together two rotations: one that takes the axes you want to align and points them along z+ and y+ respectively, and then the ...
  • 117k
4 votes

Convert quaternion to a different coordinate system

Summarizing your two coordinate spaces: ...
  • 117k
4 votes
Accepted

Rotate from Current Rotation to Another using Angular Velocity

"maybe due to the gimbal nature of Vector3 for angular velocity" ...using Vector3 for angular velocity does not entail gimbals, but converting it to Euler angles does. Angular velocity is not an ...
  • 117k
4 votes
Accepted

How to smooth rotations?

Yes, in fact that's what quaternions are often used for - interpolating between two different orientations. Other methods of representing orientation suffer from issues like gimbal lock and wrap-...
  • 14.6k
4 votes

GLM conversion from euler angles to quaternion and back does not hold

The results are not what you expect, but they are not wrong. It’s just that for a given orientation there are at least two “paths” through Euler angles that lead there. For instance, the identity ...
  • 23.5k
4 votes
Accepted

Euler angle and Quaternion conversion become weird when yaw is bigger than 90 degrees

Your current code assumes it's always going to get Euler angles where x is between ±90° and z is close to 0. Meanwhile, glm wants to return Euler angles that are standardized so that y is between ±90°,...
  • 117k
4 votes

Does gimbal lock occur only when a combination of local and world rotation axis are used?

Gimbal lock occurs when your internal structure for storing/composing rotations uses a gimbal model: Image via Wikipedia, attributed: "By Lookang many thanks to Fu-Kwun Hwang and author of Easy ...
  • 117k
4 votes
Accepted

Understanding how to use Quaternion to rotate object

Explaining why quaternions work the way they do and their relation to mainstream linear transformation rotations would require some more advanced mathematics knowledge regarding group theory and how ...
  • 328
4 votes
Accepted

How does Unity know where the character is facing?

It doesn't know. What it does is point the local z axis of the object (that's the blue arrow you see in the scene view when selecting its local transform gizmo) in the ...
  • 117k
3 votes
Accepted

How to compute the forward, up and right vectors from a single quaternion?

You can simply apply the quaternion to the (0,1,0) (0,0,-1) and (1,0,0) vectors for up forward and ...
3 votes

Quaternion Rotation Help

I'd expect the conversion to be more like: ...
3 votes
Accepted

Unity 3D - Rotate towards object with random offsets

I found the solution myself. Here's what I've done: I took the default forward rotation of the firingPoint object, and split it into it's parts - ...
  • 331

Only top scored, non community-wiki answers of a minimum length are eligible