normalized

Unit direction; a zero vector stays zero. Double intermediates avoid Float magnitude overflow.