I'm using libgdx with box2d. Write me a util method that calculates the velocity needed to push a box2d body to a target position without overshooting the position. This method should be able to handle high maxSpeed parameters I should be able to call this method every frame like so
```java
            Vector2 velocity = PhysicsUtils.velocityToPosition(body, target, maxSpeed);
            body.setLinearVelocity(velocity);
```

Assume you have access to, but not limited to:
deltaTime,
PhysicsSystem.STEP_FREQUENCY (when physics timestep = 1/60f, this = 60f)
float maxSpeed (in meters per second)
Vector2 targetPosition
Body body

This is the interpolate method on Vector2 for your reference
```java
    public Vector2 interpolate (Vector2 target, float alpha, Interpolation interpolation) {
        return lerp(target, interpolation.apply(alpha));
    }
```

Here's a reference method that never overshoots the target and is very smooth, but it takes too long to reach the target. Repeat, this is only for reference.

```java
    public static Vector2 smoothVelocityToPosition(Body body, Vector2 targetPosition, float maxSpeed) {
        Vector2 position = body.getPosition();

        //point from current direction to target
        Vector2 targetDirection = targetPosition.cpy().sub(position);

        float delta = Gdx.graphics.getDeltaTime();
        Vector2 velocity = targetDirection.scl(delta * maxSpeed * PhysicsSystem.STEP_FREQUENCY);
        return velocity;
    }
```