improved Vector2::normalize to not use trig