I have a 3rd-person camera that always watches the player from a certain distance. It updates its x and z position around the player with respect to the yaw value received from the x-axis mouse input.

I'm trying to add clashes to the 3rd person camera. The collision algorithm accesses the speed of the object to update its position. For the collision to work on the third person's camera, the position can not be easily updated, otherwise the collision will not work.

So I have a "working" implementation in which I update the correct vector of the camera while it is pointed at the player and gives the desired circulating effect. But I scale this right vector by the mouse x offset to recalculate the new camera position, and if I move the mouse fast, it will cut corners in orbit. Here's a diagram of what I mean, I hope it makes sense.

But I'd like to suggest how to get a smooth orbit and accelerate the orbit as the x offset increases due to the correct vector.

And here is the code:

```
right = cross(camera.front, camera.up);
right = normalize(right);
right = scale(right, 2.0f * deltaTime * xOffset);
cameraCollider.velocity -= right;
```

Thanks for your time.