> I do not think it is a good design decision to require the user to add an animation loop simply for the purpose of getting the controls to animate.

This could be fixed by having `OrbitController` start a timer on an as-needed basis, renewing the timer as long as the distance from the set point is above a certain tolerance.

>That is not your fault, of course; it is just the way the conrols were written. Also, having damping = 1 mean "no damping" is a bit confusing.

The `damping` term here is literally the proportional gain in a simple feedback controller. The mouse input manipulates the set point. When the mouse is released, the view will exponentially approach that set point. This is also convenient for programmatically moving the view to a particular orientation, by changing the set point.

I had thought that this was how `TrackballControls` works, but after studying it closely I realize that `TrackballControls` does something different: it immediately updates to the mouse position, and then when the mouse is released it continues to move *past* the mouse position as if it had velocity imparted by the mouse.

In practice, both behaviors do exactly the same thing when the damping term is set to 1: they both stop move immediately when the mouse is lifted. They behave similarly when damping is set to a small nonzero: they both continue moving, exponentially approaching a resting position. In this case, the current `OrbitControls` move more slowly than `TrackballControls`, but both behaviors can be made to resemble each other by adjusting the speed parameters. The only big difference is when damping is set to identically zero: here `OrbitControls` will stay at rest, whereas `TrackballControls` will stay in motion indefinitely.