If it is a direction vector, the function should probably be called "Look()" or something. The current function name very much implies that it is a rotation.

I'm not sure I understand your first comment. Our type system would allow you to assign between those if you wanted, but would make it difficult to do something like `physics.TraceRay(controls.Position, controls.Rotation)` (where the second argument to TraceRay should actually be a direction vector rather than a rotation vector) accidentally.