I began to study 3D math and noticed about left/right handed cord spaces and clockwise/counterclockwise rules. I understand that left-handed use clockwise positive rotation and right-handed counterclockwise. But what i don't understand is way this rules exists, on what technical problem this decision is based or this is just an agreement and nothing more?


You got it backwards, the rotation direction defines the handedness.

Take both of your hands and point with your thumbs in the positive direction on the X axis. Now make an "OK" gesture with your hands without rotatong it, now the otjer fingers define a circle. If the fingers on the left hand point in the same direction as the direction of rotation around the X axis, then the coordinate system is left handed, otherwise it's right handed.

The same in a picture:

enter image description here

  • \$\begingroup\$ this is not answer the question, i mean why someone provide this rules, why positive direction of rotation is different and not same for both systems? \$\endgroup\$ – max333 Aug 8 '17 at 20:07
  • \$\begingroup\$ @MaxFrei It simply depends on which axis points upwards, the Y (right handed) or the Z (left handed) \$\endgroup\$ – Bálint Aug 8 '17 at 20:32

The reason is that "direction" or "clockwise / counter-clockwise" exist only in the interpretation of the numbers.

No matter what coordinate system we use, the math of operations like the cross product remains the same.

(Otherwise you'd have to remember to use different multiplication rules in each coordinate system, which would be even more error-prone and confusing!)

Let's try a simple cross product, between basis vectors on the positive x and y axes:

$$\begin{align}\begin{bmatrix}1\\0\\0\end{bmatrix} \times \begin{bmatrix}0\\1\\0\end{bmatrix} &=\begin{bmatrix}0\cdot0 - 0\cdot1\\0\cdot0 - 1\cdot0\\1\cdot1 - 0\cdot0\end{bmatrix}\\ &=\begin{bmatrix}0\\0\\1\end{bmatrix}\end{align}$$

We get a unit vector on the local z axis. So "x cross y equals z" is what this tells us. Note that nowhere in there did we have to "tell" the math how the axes are arranged spatially. It doesn't care, it's just rules for manipulating numbers.

Now, when we try to interpret that result as a statement about 3D space in a particular coordinate system, that's where differences creep in.

Say I'm working in Unity, with its coordinate system x:right, y:up, z:forward

Unity's transform gizmo with a left hand drawn over it

I can point the fingers of my left hand so that my thumb points right, my index finger points up, and my middle finger points forward, so I can think of this relationship we just calculated as:

x (thumb) cross y (index) equals z (middle)

And we can call this a left-handed coordinate system.

Now let's say I move to 3DS Max, with its coordinate system x:right, y:forward, z:up

With the y & z axes interchanged relative to Unity's, there's no way I can contort my left hand to point in the new directions while keeping the same axis labels. But I can do it with my right hand:

3DS Max's axis gizmo with a right hand drawn over it

And the same rule now holds for my right hand instead:

x (thumb) cross y (index) equals z (middle)

So we call 3DS Max's coordinate system right-handed.

Moving from one coordinate system to the other didn't change how the vector math works in terms of its numbers, but it did mirror the spatial interpretation of those numbers - turning a left hand to a right hand.

That same mirroring applies to rotations, turning a clockwise rotation counter-clockwise or vice versa.

If I have a particular angle-axis rotation, and when I apply that rotation in a left-handed coordinate system it moves an object clockwise when viewed from the direction of the rotation axis, then copying the same numerical operation over to a right-handed coordinate system will make an object rotate counter-clockwise when viewed from the direction of the rotation axis.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.