This allows matrices to be represented as a value type, and additionally allows avoiding array allocations when calculating rotations.