normalize dir vector prior to computing the next step for point p. previously wasn't doing so and new positions were not necessarily on the sphere.