This doesn't need another scratch variable, right?  The input can be the same as the output so we can just use `scratchCartesian3` everywhere.