Download

How does Dot Product works for Rotator Axes

I have a piece of code that is taking a dot product between vector axes and feeds it into a rotator’s float.
I understand that a rotation has an orthonormal XYZ frame, but what happens when one or all of these axes are scaled (for example from 1 to 0.75) like it happens in a dot product. Also, what happens when one of the axes are not orthonormal.

I tried to visualize this with DrawDebugLine, but couldn’t figure out what is happening in general.

Unit vectors or direction vectors point to a given direction and have a magnitud of 1. if you scale them, they are no longer unit vectors ( no longer orthonormal ) because their magnitud is not equal to one and if you scale them uniformly their direction will change.

Dot Product does not scale vectors, it separates the magnitud from the direction. the result of the dot product is equal to the cosine of the angle between the two direction vectors.

For example: the dot product of these two unit vectors ( 1, 0 ) · (0.9659, 0.2588) = 0.9659 = ACOSD( 0.9659 ) = 15 degrees = COS( 15 )i + SIN( 15 )j.

If you rotate Yaw 15° from 0 (Forward vector = ( 1, 0, 0 ) ), your resulting forward vector would be (0.9659, 0.2588, 0 ).

If you multiply both ( 1, 0 ) and (0.9659, 0.2588) by 10 making them non unit vectors ( orthogonal and not orthonormal ) → ( 10, 0 ) ( 9.659, 2.588 ) and calculate the dot product, you’ll get 96.59. This proves that the dot product equals the product of their magnitudes multiplied by the cosine of the angle between them → 10 * 10 * cos( 15 ) = 96.59

This is a quick video I created for another topic about dot product: Dot - YouTube . The idea is the know the direction and difference in degrees from the forward direction of an actor (red arrow) to another actor by just using dot products.